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,12 +1,896 @@
1
- from __future__ import absolute_import, division, unicode_literals
2
-
3
- from . import _base
4
- from ..sanitizer import HTMLSanitizerMixin
5
-
6
-
7
- class Filter(_base.Filter, HTMLSanitizerMixin):
8
- def __iter__(self):
9
- for token in _base.Filter.__iter__(self):
10
- token = self.sanitize_token(token)
11
- if token:
12
- yield token
1
+ from __future__ import absolute_import, division, unicode_literals
2
+
3
+ import re
4
+ from xml.sax.saxutils import escape, unescape
5
+
6
+ from pip._vendor.six.moves import urllib_parse as urlparse
7
+
8
+ from . import base
9
+ from ..constants import namespaces, prefixes
10
+
11
+ __all__ = ["Filter"]
12
+
13
+
14
+ allowed_elements = frozenset((
15
+ (namespaces['html'], 'a'),
16
+ (namespaces['html'], 'abbr'),
17
+ (namespaces['html'], 'acronym'),
18
+ (namespaces['html'], 'address'),
19
+ (namespaces['html'], 'area'),
20
+ (namespaces['html'], 'article'),
21
+ (namespaces['html'], 'aside'),
22
+ (namespaces['html'], 'audio'),
23
+ (namespaces['html'], 'b'),
24
+ (namespaces['html'], 'big'),
25
+ (namespaces['html'], 'blockquote'),
26
+ (namespaces['html'], 'br'),
27
+ (namespaces['html'], 'button'),
28
+ (namespaces['html'], 'canvas'),
29
+ (namespaces['html'], 'caption'),
30
+ (namespaces['html'], 'center'),
31
+ (namespaces['html'], 'cite'),
32
+ (namespaces['html'], 'code'),
33
+ (namespaces['html'], 'col'),
34
+ (namespaces['html'], 'colgroup'),
35
+ (namespaces['html'], 'command'),
36
+ (namespaces['html'], 'datagrid'),
37
+ (namespaces['html'], 'datalist'),
38
+ (namespaces['html'], 'dd'),
39
+ (namespaces['html'], 'del'),
40
+ (namespaces['html'], 'details'),
41
+ (namespaces['html'], 'dfn'),
42
+ (namespaces['html'], 'dialog'),
43
+ (namespaces['html'], 'dir'),
44
+ (namespaces['html'], 'div'),
45
+ (namespaces['html'], 'dl'),
46
+ (namespaces['html'], 'dt'),
47
+ (namespaces['html'], 'em'),
48
+ (namespaces['html'], 'event-source'),
49
+ (namespaces['html'], 'fieldset'),
50
+ (namespaces['html'], 'figcaption'),
51
+ (namespaces['html'], 'figure'),
52
+ (namespaces['html'], 'footer'),
53
+ (namespaces['html'], 'font'),
54
+ (namespaces['html'], 'form'),
55
+ (namespaces['html'], 'header'),
56
+ (namespaces['html'], 'h1'),
57
+ (namespaces['html'], 'h2'),
58
+ (namespaces['html'], 'h3'),
59
+ (namespaces['html'], 'h4'),
60
+ (namespaces['html'], 'h5'),
61
+ (namespaces['html'], 'h6'),
62
+ (namespaces['html'], 'hr'),
63
+ (namespaces['html'], 'i'),
64
+ (namespaces['html'], 'img'),
65
+ (namespaces['html'], 'input'),
66
+ (namespaces['html'], 'ins'),
67
+ (namespaces['html'], 'keygen'),
68
+ (namespaces['html'], 'kbd'),
69
+ (namespaces['html'], 'label'),
70
+ (namespaces['html'], 'legend'),
71
+ (namespaces['html'], 'li'),
72
+ (namespaces['html'], 'm'),
73
+ (namespaces['html'], 'map'),
74
+ (namespaces['html'], 'menu'),
75
+ (namespaces['html'], 'meter'),
76
+ (namespaces['html'], 'multicol'),
77
+ (namespaces['html'], 'nav'),
78
+ (namespaces['html'], 'nextid'),
79
+ (namespaces['html'], 'ol'),
80
+ (namespaces['html'], 'output'),
81
+ (namespaces['html'], 'optgroup'),
82
+ (namespaces['html'], 'option'),
83
+ (namespaces['html'], 'p'),
84
+ (namespaces['html'], 'pre'),
85
+ (namespaces['html'], 'progress'),
86
+ (namespaces['html'], 'q'),
87
+ (namespaces['html'], 's'),
88
+ (namespaces['html'], 'samp'),
89
+ (namespaces['html'], 'section'),
90
+ (namespaces['html'], 'select'),
91
+ (namespaces['html'], 'small'),
92
+ (namespaces['html'], 'sound'),
93
+ (namespaces['html'], 'source'),
94
+ (namespaces['html'], 'spacer'),
95
+ (namespaces['html'], 'span'),
96
+ (namespaces['html'], 'strike'),
97
+ (namespaces['html'], 'strong'),
98
+ (namespaces['html'], 'sub'),
99
+ (namespaces['html'], 'sup'),
100
+ (namespaces['html'], 'table'),
101
+ (namespaces['html'], 'tbody'),
102
+ (namespaces['html'], 'td'),
103
+ (namespaces['html'], 'textarea'),
104
+ (namespaces['html'], 'time'),
105
+ (namespaces['html'], 'tfoot'),
106
+ (namespaces['html'], 'th'),
107
+ (namespaces['html'], 'thead'),
108
+ (namespaces['html'], 'tr'),
109
+ (namespaces['html'], 'tt'),
110
+ (namespaces['html'], 'u'),
111
+ (namespaces['html'], 'ul'),
112
+ (namespaces['html'], 'var'),
113
+ (namespaces['html'], 'video'),
114
+ (namespaces['mathml'], 'maction'),
115
+ (namespaces['mathml'], 'math'),
116
+ (namespaces['mathml'], 'merror'),
117
+ (namespaces['mathml'], 'mfrac'),
118
+ (namespaces['mathml'], 'mi'),
119
+ (namespaces['mathml'], 'mmultiscripts'),
120
+ (namespaces['mathml'], 'mn'),
121
+ (namespaces['mathml'], 'mo'),
122
+ (namespaces['mathml'], 'mover'),
123
+ (namespaces['mathml'], 'mpadded'),
124
+ (namespaces['mathml'], 'mphantom'),
125
+ (namespaces['mathml'], 'mprescripts'),
126
+ (namespaces['mathml'], 'mroot'),
127
+ (namespaces['mathml'], 'mrow'),
128
+ (namespaces['mathml'], 'mspace'),
129
+ (namespaces['mathml'], 'msqrt'),
130
+ (namespaces['mathml'], 'mstyle'),
131
+ (namespaces['mathml'], 'msub'),
132
+ (namespaces['mathml'], 'msubsup'),
133
+ (namespaces['mathml'], 'msup'),
134
+ (namespaces['mathml'], 'mtable'),
135
+ (namespaces['mathml'], 'mtd'),
136
+ (namespaces['mathml'], 'mtext'),
137
+ (namespaces['mathml'], 'mtr'),
138
+ (namespaces['mathml'], 'munder'),
139
+ (namespaces['mathml'], 'munderover'),
140
+ (namespaces['mathml'], 'none'),
141
+ (namespaces['svg'], 'a'),
142
+ (namespaces['svg'], 'animate'),
143
+ (namespaces['svg'], 'animateColor'),
144
+ (namespaces['svg'], 'animateMotion'),
145
+ (namespaces['svg'], 'animateTransform'),
146
+ (namespaces['svg'], 'clipPath'),
147
+ (namespaces['svg'], 'circle'),
148
+ (namespaces['svg'], 'defs'),
149
+ (namespaces['svg'], 'desc'),
150
+ (namespaces['svg'], 'ellipse'),
151
+ (namespaces['svg'], 'font-face'),
152
+ (namespaces['svg'], 'font-face-name'),
153
+ (namespaces['svg'], 'font-face-src'),
154
+ (namespaces['svg'], 'g'),
155
+ (namespaces['svg'], 'glyph'),
156
+ (namespaces['svg'], 'hkern'),
157
+ (namespaces['svg'], 'linearGradient'),
158
+ (namespaces['svg'], 'line'),
159
+ (namespaces['svg'], 'marker'),
160
+ (namespaces['svg'], 'metadata'),
161
+ (namespaces['svg'], 'missing-glyph'),
162
+ (namespaces['svg'], 'mpath'),
163
+ (namespaces['svg'], 'path'),
164
+ (namespaces['svg'], 'polygon'),
165
+ (namespaces['svg'], 'polyline'),
166
+ (namespaces['svg'], 'radialGradient'),
167
+ (namespaces['svg'], 'rect'),
168
+ (namespaces['svg'], 'set'),
169
+ (namespaces['svg'], 'stop'),
170
+ (namespaces['svg'], 'svg'),
171
+ (namespaces['svg'], 'switch'),
172
+ (namespaces['svg'], 'text'),
173
+ (namespaces['svg'], 'title'),
174
+ (namespaces['svg'], 'tspan'),
175
+ (namespaces['svg'], 'use'),
176
+ ))
177
+
178
+ allowed_attributes = frozenset((
179
+ # HTML attributes
180
+ (None, 'abbr'),
181
+ (None, 'accept'),
182
+ (None, 'accept-charset'),
183
+ (None, 'accesskey'),
184
+ (None, 'action'),
185
+ (None, 'align'),
186
+ (None, 'alt'),
187
+ (None, 'autocomplete'),
188
+ (None, 'autofocus'),
189
+ (None, 'axis'),
190
+ (None, 'background'),
191
+ (None, 'balance'),
192
+ (None, 'bgcolor'),
193
+ (None, 'bgproperties'),
194
+ (None, 'border'),
195
+ (None, 'bordercolor'),
196
+ (None, 'bordercolordark'),
197
+ (None, 'bordercolorlight'),
198
+ (None, 'bottompadding'),
199
+ (None, 'cellpadding'),
200
+ (None, 'cellspacing'),
201
+ (None, 'ch'),
202
+ (None, 'challenge'),
203
+ (None, 'char'),
204
+ (None, 'charoff'),
205
+ (None, 'choff'),
206
+ (None, 'charset'),
207
+ (None, 'checked'),
208
+ (None, 'cite'),
209
+ (None, 'class'),
210
+ (None, 'clear'),
211
+ (None, 'color'),
212
+ (None, 'cols'),
213
+ (None, 'colspan'),
214
+ (None, 'compact'),
215
+ (None, 'contenteditable'),
216
+ (None, 'controls'),
217
+ (None, 'coords'),
218
+ (None, 'data'),
219
+ (None, 'datafld'),
220
+ (None, 'datapagesize'),
221
+ (None, 'datasrc'),
222
+ (None, 'datetime'),
223
+ (None, 'default'),
224
+ (None, 'delay'),
225
+ (None, 'dir'),
226
+ (None, 'disabled'),
227
+ (None, 'draggable'),
228
+ (None, 'dynsrc'),
229
+ (None, 'enctype'),
230
+ (None, 'end'),
231
+ (None, 'face'),
232
+ (None, 'for'),
233
+ (None, 'form'),
234
+ (None, 'frame'),
235
+ (None, 'galleryimg'),
236
+ (None, 'gutter'),
237
+ (None, 'headers'),
238
+ (None, 'height'),
239
+ (None, 'hidefocus'),
240
+ (None, 'hidden'),
241
+ (None, 'high'),
242
+ (None, 'href'),
243
+ (None, 'hreflang'),
244
+ (None, 'hspace'),
245
+ (None, 'icon'),
246
+ (None, 'id'),
247
+ (None, 'inputmode'),
248
+ (None, 'ismap'),
249
+ (None, 'keytype'),
250
+ (None, 'label'),
251
+ (None, 'leftspacing'),
252
+ (None, 'lang'),
253
+ (None, 'list'),
254
+ (None, 'longdesc'),
255
+ (None, 'loop'),
256
+ (None, 'loopcount'),
257
+ (None, 'loopend'),
258
+ (None, 'loopstart'),
259
+ (None, 'low'),
260
+ (None, 'lowsrc'),
261
+ (None, 'max'),
262
+ (None, 'maxlength'),
263
+ (None, 'media'),
264
+ (None, 'method'),
265
+ (None, 'min'),
266
+ (None, 'multiple'),
267
+ (None, 'name'),
268
+ (None, 'nohref'),
269
+ (None, 'noshade'),
270
+ (None, 'nowrap'),
271
+ (None, 'open'),
272
+ (None, 'optimum'),
273
+ (None, 'pattern'),
274
+ (None, 'ping'),
275
+ (None, 'point-size'),
276
+ (None, 'poster'),
277
+ (None, 'pqg'),
278
+ (None, 'preload'),
279
+ (None, 'prompt'),
280
+ (None, 'radiogroup'),
281
+ (None, 'readonly'),
282
+ (None, 'rel'),
283
+ (None, 'repeat-max'),
284
+ (None, 'repeat-min'),
285
+ (None, 'replace'),
286
+ (None, 'required'),
287
+ (None, 'rev'),
288
+ (None, 'rightspacing'),
289
+ (None, 'rows'),
290
+ (None, 'rowspan'),
291
+ (None, 'rules'),
292
+ (None, 'scope'),
293
+ (None, 'selected'),
294
+ (None, 'shape'),
295
+ (None, 'size'),
296
+ (None, 'span'),
297
+ (None, 'src'),
298
+ (None, 'start'),
299
+ (None, 'step'),
300
+ (None, 'style'),
301
+ (None, 'summary'),
302
+ (None, 'suppress'),
303
+ (None, 'tabindex'),
304
+ (None, 'target'),
305
+ (None, 'template'),
306
+ (None, 'title'),
307
+ (None, 'toppadding'),
308
+ (None, 'type'),
309
+ (None, 'unselectable'),
310
+ (None, 'usemap'),
311
+ (None, 'urn'),
312
+ (None, 'valign'),
313
+ (None, 'value'),
314
+ (None, 'variable'),
315
+ (None, 'volume'),
316
+ (None, 'vspace'),
317
+ (None, 'vrml'),
318
+ (None, 'width'),
319
+ (None, 'wrap'),
320
+ (namespaces['xml'], 'lang'),
321
+ # MathML attributes
322
+ (None, 'actiontype'),
323
+ (None, 'align'),
324
+ (None, 'columnalign'),
325
+ (None, 'columnalign'),
326
+ (None, 'columnalign'),
327
+ (None, 'columnlines'),
328
+ (None, 'columnspacing'),
329
+ (None, 'columnspan'),
330
+ (None, 'depth'),
331
+ (None, 'display'),
332
+ (None, 'displaystyle'),
333
+ (None, 'equalcolumns'),
334
+ (None, 'equalrows'),
335
+ (None, 'fence'),
336
+ (None, 'fontstyle'),
337
+ (None, 'fontweight'),
338
+ (None, 'frame'),
339
+ (None, 'height'),
340
+ (None, 'linethickness'),
341
+ (None, 'lspace'),
342
+ (None, 'mathbackground'),
343
+ (None, 'mathcolor'),
344
+ (None, 'mathvariant'),
345
+ (None, 'mathvariant'),
346
+ (None, 'maxsize'),
347
+ (None, 'minsize'),
348
+ (None, 'other'),
349
+ (None, 'rowalign'),
350
+ (None, 'rowalign'),
351
+ (None, 'rowalign'),
352
+ (None, 'rowlines'),
353
+ (None, 'rowspacing'),
354
+ (None, 'rowspan'),
355
+ (None, 'rspace'),
356
+ (None, 'scriptlevel'),
357
+ (None, 'selection'),
358
+ (None, 'separator'),
359
+ (None, 'stretchy'),
360
+ (None, 'width'),
361
+ (None, 'width'),
362
+ (namespaces['xlink'], 'href'),
363
+ (namespaces['xlink'], 'show'),
364
+ (namespaces['xlink'], 'type'),
365
+ # SVG attributes
366
+ (None, 'accent-height'),
367
+ (None, 'accumulate'),
368
+ (None, 'additive'),
369
+ (None, 'alphabetic'),
370
+ (None, 'arabic-form'),
371
+ (None, 'ascent'),
372
+ (None, 'attributeName'),
373
+ (None, 'attributeType'),
374
+ (None, 'baseProfile'),
375
+ (None, 'bbox'),
376
+ (None, 'begin'),
377
+ (None, 'by'),
378
+ (None, 'calcMode'),
379
+ (None, 'cap-height'),
380
+ (None, 'class'),
381
+ (None, 'clip-path'),
382
+ (None, 'color'),
383
+ (None, 'color-rendering'),
384
+ (None, 'content'),
385
+ (None, 'cx'),
386
+ (None, 'cy'),
387
+ (None, 'd'),
388
+ (None, 'dx'),
389
+ (None, 'dy'),
390
+ (None, 'descent'),
391
+ (None, 'display'),
392
+ (None, 'dur'),
393
+ (None, 'end'),
394
+ (None, 'fill'),
395
+ (None, 'fill-opacity'),
396
+ (None, 'fill-rule'),
397
+ (None, 'font-family'),
398
+ (None, 'font-size'),
399
+ (None, 'font-stretch'),
400
+ (None, 'font-style'),
401
+ (None, 'font-variant'),
402
+ (None, 'font-weight'),
403
+ (None, 'from'),
404
+ (None, 'fx'),
405
+ (None, 'fy'),
406
+ (None, 'g1'),
407
+ (None, 'g2'),
408
+ (None, 'glyph-name'),
409
+ (None, 'gradientUnits'),
410
+ (None, 'hanging'),
411
+ (None, 'height'),
412
+ (None, 'horiz-adv-x'),
413
+ (None, 'horiz-origin-x'),
414
+ (None, 'id'),
415
+ (None, 'ideographic'),
416
+ (None, 'k'),
417
+ (None, 'keyPoints'),
418
+ (None, 'keySplines'),
419
+ (None, 'keyTimes'),
420
+ (None, 'lang'),
421
+ (None, 'marker-end'),
422
+ (None, 'marker-mid'),
423
+ (None, 'marker-start'),
424
+ (None, 'markerHeight'),
425
+ (None, 'markerUnits'),
426
+ (None, 'markerWidth'),
427
+ (None, 'mathematical'),
428
+ (None, 'max'),
429
+ (None, 'min'),
430
+ (None, 'name'),
431
+ (None, 'offset'),
432
+ (None, 'opacity'),
433
+ (None, 'orient'),
434
+ (None, 'origin'),
435
+ (None, 'overline-position'),
436
+ (None, 'overline-thickness'),
437
+ (None, 'panose-1'),
438
+ (None, 'path'),
439
+ (None, 'pathLength'),
440
+ (None, 'points'),
441
+ (None, 'preserveAspectRatio'),
442
+ (None, 'r'),
443
+ (None, 'refX'),
444
+ (None, 'refY'),
445
+ (None, 'repeatCount'),
446
+ (None, 'repeatDur'),
447
+ (None, 'requiredExtensions'),
448
+ (None, 'requiredFeatures'),
449
+ (None, 'restart'),
450
+ (None, 'rotate'),
451
+ (None, 'rx'),
452
+ (None, 'ry'),
453
+ (None, 'slope'),
454
+ (None, 'stemh'),
455
+ (None, 'stemv'),
456
+ (None, 'stop-color'),
457
+ (None, 'stop-opacity'),
458
+ (None, 'strikethrough-position'),
459
+ (None, 'strikethrough-thickness'),
460
+ (None, 'stroke'),
461
+ (None, 'stroke-dasharray'),
462
+ (None, 'stroke-dashoffset'),
463
+ (None, 'stroke-linecap'),
464
+ (None, 'stroke-linejoin'),
465
+ (None, 'stroke-miterlimit'),
466
+ (None, 'stroke-opacity'),
467
+ (None, 'stroke-width'),
468
+ (None, 'systemLanguage'),
469
+ (None, 'target'),
470
+ (None, 'text-anchor'),
471
+ (None, 'to'),
472
+ (None, 'transform'),
473
+ (None, 'type'),
474
+ (None, 'u1'),
475
+ (None, 'u2'),
476
+ (None, 'underline-position'),
477
+ (None, 'underline-thickness'),
478
+ (None, 'unicode'),
479
+ (None, 'unicode-range'),
480
+ (None, 'units-per-em'),
481
+ (None, 'values'),
482
+ (None, 'version'),
483
+ (None, 'viewBox'),
484
+ (None, 'visibility'),
485
+ (None, 'width'),
486
+ (None, 'widths'),
487
+ (None, 'x'),
488
+ (None, 'x-height'),
489
+ (None, 'x1'),
490
+ (None, 'x2'),
491
+ (namespaces['xlink'], 'actuate'),
492
+ (namespaces['xlink'], 'arcrole'),
493
+ (namespaces['xlink'], 'href'),
494
+ (namespaces['xlink'], 'role'),
495
+ (namespaces['xlink'], 'show'),
496
+ (namespaces['xlink'], 'title'),
497
+ (namespaces['xlink'], 'type'),
498
+ (namespaces['xml'], 'base'),
499
+ (namespaces['xml'], 'lang'),
500
+ (namespaces['xml'], 'space'),
501
+ (None, 'y'),
502
+ (None, 'y1'),
503
+ (None, 'y2'),
504
+ (None, 'zoomAndPan'),
505
+ ))
506
+
507
+ attr_val_is_uri = frozenset((
508
+ (None, 'href'),
509
+ (None, 'src'),
510
+ (None, 'cite'),
511
+ (None, 'action'),
512
+ (None, 'longdesc'),
513
+ (None, 'poster'),
514
+ (None, 'background'),
515
+ (None, 'datasrc'),
516
+ (None, 'dynsrc'),
517
+ (None, 'lowsrc'),
518
+ (None, 'ping'),
519
+ (namespaces['xlink'], 'href'),
520
+ (namespaces['xml'], 'base'),
521
+ ))
522
+
523
+ svg_attr_val_allows_ref = frozenset((
524
+ (None, 'clip-path'),
525
+ (None, 'color-profile'),
526
+ (None, 'cursor'),
527
+ (None, 'fill'),
528
+ (None, 'filter'),
529
+ (None, 'marker'),
530
+ (None, 'marker-start'),
531
+ (None, 'marker-mid'),
532
+ (None, 'marker-end'),
533
+ (None, 'mask'),
534
+ (None, 'stroke'),
535
+ ))
536
+
537
+ svg_allow_local_href = frozenset((
538
+ (None, 'altGlyph'),
539
+ (None, 'animate'),
540
+ (None, 'animateColor'),
541
+ (None, 'animateMotion'),
542
+ (None, 'animateTransform'),
543
+ (None, 'cursor'),
544
+ (None, 'feImage'),
545
+ (None, 'filter'),
546
+ (None, 'linearGradient'),
547
+ (None, 'pattern'),
548
+ (None, 'radialGradient'),
549
+ (None, 'textpath'),
550
+ (None, 'tref'),
551
+ (None, 'set'),
552
+ (None, 'use')
553
+ ))
554
+
555
+ allowed_css_properties = frozenset((
556
+ 'azimuth',
557
+ 'background-color',
558
+ 'border-bottom-color',
559
+ 'border-collapse',
560
+ 'border-color',
561
+ 'border-left-color',
562
+ 'border-right-color',
563
+ 'border-top-color',
564
+ 'clear',
565
+ 'color',
566
+ 'cursor',
567
+ 'direction',
568
+ 'display',
569
+ 'elevation',
570
+ 'float',
571
+ 'font',
572
+ 'font-family',
573
+ 'font-size',
574
+ 'font-style',
575
+ 'font-variant',
576
+ 'font-weight',
577
+ 'height',
578
+ 'letter-spacing',
579
+ 'line-height',
580
+ 'overflow',
581
+ 'pause',
582
+ 'pause-after',
583
+ 'pause-before',
584
+ 'pitch',
585
+ 'pitch-range',
586
+ 'richness',
587
+ 'speak',
588
+ 'speak-header',
589
+ 'speak-numeral',
590
+ 'speak-punctuation',
591
+ 'speech-rate',
592
+ 'stress',
593
+ 'text-align',
594
+ 'text-decoration',
595
+ 'text-indent',
596
+ 'unicode-bidi',
597
+ 'vertical-align',
598
+ 'voice-family',
599
+ 'volume',
600
+ 'white-space',
601
+ 'width',
602
+ ))
603
+
604
+ allowed_css_keywords = frozenset((
605
+ 'auto',
606
+ 'aqua',
607
+ 'black',
608
+ 'block',
609
+ 'blue',
610
+ 'bold',
611
+ 'both',
612
+ 'bottom',
613
+ 'brown',
614
+ 'center',
615
+ 'collapse',
616
+ 'dashed',
617
+ 'dotted',
618
+ 'fuchsia',
619
+ 'gray',
620
+ 'green',
621
+ '!important',
622
+ 'italic',
623
+ 'left',
624
+ 'lime',
625
+ 'maroon',
626
+ 'medium',
627
+ 'none',
628
+ 'navy',
629
+ 'normal',
630
+ 'nowrap',
631
+ 'olive',
632
+ 'pointer',
633
+ 'purple',
634
+ 'red',
635
+ 'right',
636
+ 'solid',
637
+ 'silver',
638
+ 'teal',
639
+ 'top',
640
+ 'transparent',
641
+ 'underline',
642
+ 'white',
643
+ 'yellow',
644
+ ))
645
+
646
+ allowed_svg_properties = frozenset((
647
+ 'fill',
648
+ 'fill-opacity',
649
+ 'fill-rule',
650
+ 'stroke',
651
+ 'stroke-width',
652
+ 'stroke-linecap',
653
+ 'stroke-linejoin',
654
+ 'stroke-opacity',
655
+ ))
656
+
657
+ allowed_protocols = frozenset((
658
+ 'ed2k',
659
+ 'ftp',
660
+ 'http',
661
+ 'https',
662
+ 'irc',
663
+ 'mailto',
664
+ 'news',
665
+ 'gopher',
666
+ 'nntp',
667
+ 'telnet',
668
+ 'webcal',
669
+ 'xmpp',
670
+ 'callto',
671
+ 'feed',
672
+ 'urn',
673
+ 'aim',
674
+ 'rsync',
675
+ 'tag',
676
+ 'ssh',
677
+ 'sftp',
678
+ 'rtsp',
679
+ 'afs',
680
+ 'data',
681
+ ))
682
+
683
+ allowed_content_types = frozenset((
684
+ 'image/png',
685
+ 'image/jpeg',
686
+ 'image/gif',
687
+ 'image/webp',
688
+ 'image/bmp',
689
+ 'text/plain',
690
+ ))
691
+
692
+
693
+ data_content_type = re.compile(r'''
694
+ ^
695
+ # Match a content type <application>/<type>
696
+ (?P<content_type>[-a-zA-Z0-9.]+/[-a-zA-Z0-9.]+)
697
+ # Match any character set and encoding
698
+ (?:(?:;charset=(?:[-a-zA-Z0-9]+)(?:;(?:base64))?)
699
+ |(?:;(?:base64))?(?:;charset=(?:[-a-zA-Z0-9]+))?)
700
+ # Assume the rest is data
701
+ ,.*
702
+ $
703
+ ''',
704
+ re.VERBOSE)
705
+
706
+
707
+ class Filter(base.Filter):
708
+ """Sanitizes token stream of XHTML+MathML+SVG and of inline style attributes"""
709
+ def __init__(self,
710
+ source,
711
+ allowed_elements=allowed_elements,
712
+ allowed_attributes=allowed_attributes,
713
+ allowed_css_properties=allowed_css_properties,
714
+ allowed_css_keywords=allowed_css_keywords,
715
+ allowed_svg_properties=allowed_svg_properties,
716
+ allowed_protocols=allowed_protocols,
717
+ allowed_content_types=allowed_content_types,
718
+ attr_val_is_uri=attr_val_is_uri,
719
+ svg_attr_val_allows_ref=svg_attr_val_allows_ref,
720
+ svg_allow_local_href=svg_allow_local_href):
721
+ """Creates a Filter
722
+
723
+ :arg allowed_elements: set of elements to allow--everything else will
724
+ be escaped
725
+
726
+ :arg allowed_attributes: set of attributes to allow in
727
+ elements--everything else will be stripped
728
+
729
+ :arg allowed_css_properties: set of CSS properties to allow--everything
730
+ else will be stripped
731
+
732
+ :arg allowed_css_keywords: set of CSS keywords to allow--everything
733
+ else will be stripped
734
+
735
+ :arg allowed_svg_properties: set of SVG properties to allow--everything
736
+ else will be removed
737
+
738
+ :arg allowed_protocols: set of allowed protocols for URIs
739
+
740
+ :arg allowed_content_types: set of allowed content types for ``data`` URIs.
741
+
742
+ :arg attr_val_is_uri: set of attributes that have URI values--values
743
+ that have a scheme not listed in ``allowed_protocols`` are removed
744
+
745
+ :arg svg_attr_val_allows_ref: set of SVG attributes that can have
746
+ references
747
+
748
+ :arg svg_allow_local_href: set of SVG elements that can have local
749
+ hrefs--these are removed
750
+
751
+ """
752
+ super(Filter, self).__init__(source)
753
+ self.allowed_elements = allowed_elements
754
+ self.allowed_attributes = allowed_attributes
755
+ self.allowed_css_properties = allowed_css_properties
756
+ self.allowed_css_keywords = allowed_css_keywords
757
+ self.allowed_svg_properties = allowed_svg_properties
758
+ self.allowed_protocols = allowed_protocols
759
+ self.allowed_content_types = allowed_content_types
760
+ self.attr_val_is_uri = attr_val_is_uri
761
+ self.svg_attr_val_allows_ref = svg_attr_val_allows_ref
762
+ self.svg_allow_local_href = svg_allow_local_href
763
+
764
+ def __iter__(self):
765
+ for token in base.Filter.__iter__(self):
766
+ token = self.sanitize_token(token)
767
+ if token:
768
+ yield token
769
+
770
+ # Sanitize the +html+, escaping all elements not in ALLOWED_ELEMENTS, and
771
+ # stripping out all attributes not in ALLOWED_ATTRIBUTES. Style attributes
772
+ # are parsed, and a restricted set, specified by ALLOWED_CSS_PROPERTIES and
773
+ # ALLOWED_CSS_KEYWORDS, are allowed through. attributes in ATTR_VAL_IS_URI
774
+ # are scanned, and only URI schemes specified in ALLOWED_PROTOCOLS are
775
+ # allowed.
776
+ #
777
+ # sanitize_html('<script> do_nasty_stuff() </script>')
778
+ # => &lt;script> do_nasty_stuff() &lt;/script>
779
+ # sanitize_html('<a href="javascript: sucker();">Click here for $100</a>')
780
+ # => <a>Click here for $100</a>
781
+ def sanitize_token(self, token):
782
+
783
+ # accommodate filters which use token_type differently
784
+ token_type = token["type"]
785
+ if token_type in ("StartTag", "EndTag", "EmptyTag"):
786
+ name = token["name"]
787
+ namespace = token["namespace"]
788
+ if ((namespace, name) in self.allowed_elements or
789
+ (namespace is None and
790
+ (namespaces["html"], name) in self.allowed_elements)):
791
+ return self.allowed_token(token)
792
+ else:
793
+ return self.disallowed_token(token)
794
+ elif token_type == "Comment":
795
+ pass
796
+ else:
797
+ return token
798
+
799
+ def allowed_token(self, token):
800
+ if "data" in token:
801
+ attrs = token["data"]
802
+ attr_names = set(attrs.keys())
803
+
804
+ # Remove forbidden attributes
805
+ for to_remove in (attr_names - self.allowed_attributes):
806
+ del token["data"][to_remove]
807
+ attr_names.remove(to_remove)
808
+
809
+ # Remove attributes with disallowed URL values
810
+ for attr in (attr_names & self.attr_val_is_uri):
811
+ assert attr in attrs
812
+ # I don't have a clue where this regexp comes from or why it matches those
813
+ # characters, nor why we call unescape. I just know it's always been here.
814
+ # Should you be worried by this comment in a sanitizer? Yes. On the other hand, all
815
+ # this will do is remove *more* than it otherwise would.
816
+ val_unescaped = re.sub("[`\x00-\x20\x7f-\xa0\\s]+", '',
817
+ unescape(attrs[attr])).lower()
818
+ # remove replacement characters from unescaped characters
819
+ val_unescaped = val_unescaped.replace("\ufffd", "")
820
+ try:
821
+ uri = urlparse.urlparse(val_unescaped)
822
+ except ValueError:
823
+ uri = None
824
+ del attrs[attr]
825
+ if uri and uri.scheme:
826
+ if uri.scheme not in self.allowed_protocols:
827
+ del attrs[attr]
828
+ if uri.scheme == 'data':
829
+ m = data_content_type.match(uri.path)
830
+ if not m:
831
+ del attrs[attr]
832
+ elif m.group('content_type') not in self.allowed_content_types:
833
+ del attrs[attr]
834
+
835
+ for attr in self.svg_attr_val_allows_ref:
836
+ if attr in attrs:
837
+ attrs[attr] = re.sub(r'url\s*\(\s*[^#\s][^)]+?\)',
838
+ ' ',
839
+ unescape(attrs[attr]))
840
+ if (token["name"] in self.svg_allow_local_href and
841
+ (namespaces['xlink'], 'href') in attrs and re.search(r'^\s*[^#\s].*',
842
+ attrs[(namespaces['xlink'], 'href')])):
843
+ del attrs[(namespaces['xlink'], 'href')]
844
+ if (None, 'style') in attrs:
845
+ attrs[(None, 'style')] = self.sanitize_css(attrs[(None, 'style')])
846
+ token["data"] = attrs
847
+ return token
848
+
849
+ def disallowed_token(self, token):
850
+ token_type = token["type"]
851
+ if token_type == "EndTag":
852
+ token["data"] = "</%s>" % token["name"]
853
+ elif token["data"]:
854
+ assert token_type in ("StartTag", "EmptyTag")
855
+ attrs = []
856
+ for (ns, name), v in token["data"].items():
857
+ attrs.append(' %s="%s"' % (name if ns is None else "%s:%s" % (prefixes[ns], name), escape(v)))
858
+ token["data"] = "<%s%s>" % (token["name"], ''.join(attrs))
859
+ else:
860
+ token["data"] = "<%s>" % token["name"]
861
+ if token.get("selfClosing"):
862
+ token["data"] = token["data"][:-1] + "/>"
863
+
864
+ token["type"] = "Characters"
865
+
866
+ del token["name"]
867
+ return token
868
+
869
+ def sanitize_css(self, style):
870
+ # disallow urls
871
+ style = re.compile(r'url\s*\(\s*[^\s)]+?\s*\)\s*').sub(' ', style)
872
+
873
+ # gauntlet
874
+ if not re.match(r"""^([:,;#%.\sa-zA-Z0-9!]|\w-\w|'[\s\w]+'|"[\s\w]+"|\([\d,\s]+\))*$""", style):
875
+ return ''
876
+ if not re.match(r"^\s*([-\w]+\s*:[^:;]*(;\s*|$))*$", style):
877
+ return ''
878
+
879
+ clean = []
880
+ for prop, value in re.findall(r"([-\w]+)\s*:\s*([^:;]*)", style):
881
+ if not value:
882
+ continue
883
+ if prop.lower() in self.allowed_css_properties:
884
+ clean.append(prop + ': ' + value + ';')
885
+ elif prop.split('-')[0].lower() in ['background', 'border', 'margin',
886
+ 'padding']:
887
+ for keyword in value.split():
888
+ if keyword not in self.allowed_css_keywords and \
889
+ not re.match(r"^(#[0-9a-fA-F]+|rgb\(\d+%?,\d*%?,?\d*%?\)?|\d{0,2}\.?\d{0,2}(cm|em|ex|in|mm|pc|pt|px|%|,|\))?)$", keyword): # noqa
890
+ break
891
+ else:
892
+ clean.append(prop + ': ' + value + ';')
893
+ elif prop.lower() in self.allowed_svg_properties:
894
+ clean.append(prop + ': ' + value + ';')
895
+
896
+ return ' '.join(clean)