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
@@ -0,0 +1,347 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ """
4
+ lockfile.py - Platform-independent advisory file locks.
5
+
6
+ Requires Python 2.5 unless you apply 2.4.diff
7
+ Locking is done on a per-thread basis instead of a per-process basis.
8
+
9
+ Usage:
10
+
11
+ >>> lock = LockFile('somefile')
12
+ >>> try:
13
+ ... lock.acquire()
14
+ ... except AlreadyLocked:
15
+ ... print 'somefile', 'is locked already.'
16
+ ... except LockFailed:
17
+ ... print 'somefile', 'can\\'t be locked.'
18
+ ... else:
19
+ ... print 'got lock'
20
+ got lock
21
+ >>> print lock.is_locked()
22
+ True
23
+ >>> lock.release()
24
+
25
+ >>> lock = LockFile('somefile')
26
+ >>> print lock.is_locked()
27
+ False
28
+ >>> with lock:
29
+ ... print lock.is_locked()
30
+ True
31
+ >>> print lock.is_locked()
32
+ False
33
+
34
+ >>> lock = LockFile('somefile')
35
+ >>> # It is okay to lock twice from the same thread...
36
+ >>> with lock:
37
+ ... lock.acquire()
38
+ ...
39
+ >>> # Though no counter is kept, so you can't unlock multiple times...
40
+ >>> print lock.is_locked()
41
+ False
42
+
43
+ Exceptions:
44
+
45
+ Error - base class for other exceptions
46
+ LockError - base class for all locking exceptions
47
+ AlreadyLocked - Another thread or process already holds the lock
48
+ LockFailed - Lock failed for some other reason
49
+ UnlockError - base class for all unlocking exceptions
50
+ AlreadyUnlocked - File was not locked.
51
+ NotMyLock - File was locked but not by the current thread/process
52
+ """
53
+
54
+ from __future__ import absolute_import
55
+
56
+ import functools
57
+ import os
58
+ import socket
59
+ import threading
60
+ import warnings
61
+
62
+ # Work with PEP8 and non-PEP8 versions of threading module.
63
+ if not hasattr(threading, "current_thread"):
64
+ threading.current_thread = threading.currentThread
65
+ if not hasattr(threading.Thread, "get_name"):
66
+ threading.Thread.get_name = threading.Thread.getName
67
+
68
+ __all__ = ['Error', 'LockError', 'LockTimeout', 'AlreadyLocked',
69
+ 'LockFailed', 'UnlockError', 'NotLocked', 'NotMyLock',
70
+ 'LinkFileLock', 'MkdirFileLock', 'SQLiteFileLock',
71
+ 'LockBase', 'locked']
72
+
73
+
74
+ class Error(Exception):
75
+ """
76
+ Base class for other exceptions.
77
+
78
+ >>> try:
79
+ ... raise Error
80
+ ... except Exception:
81
+ ... pass
82
+ """
83
+ pass
84
+
85
+
86
+ class LockError(Error):
87
+ """
88
+ Base class for error arising from attempts to acquire the lock.
89
+
90
+ >>> try:
91
+ ... raise LockError
92
+ ... except Error:
93
+ ... pass
94
+ """
95
+ pass
96
+
97
+
98
+ class LockTimeout(LockError):
99
+ """Raised when lock creation fails within a user-defined period of time.
100
+
101
+ >>> try:
102
+ ... raise LockTimeout
103
+ ... except LockError:
104
+ ... pass
105
+ """
106
+ pass
107
+
108
+
109
+ class AlreadyLocked(LockError):
110
+ """Some other thread/process is locking the file.
111
+
112
+ >>> try:
113
+ ... raise AlreadyLocked
114
+ ... except LockError:
115
+ ... pass
116
+ """
117
+ pass
118
+
119
+
120
+ class LockFailed(LockError):
121
+ """Lock file creation failed for some other reason.
122
+
123
+ >>> try:
124
+ ... raise LockFailed
125
+ ... except LockError:
126
+ ... pass
127
+ """
128
+ pass
129
+
130
+
131
+ class UnlockError(Error):
132
+ """
133
+ Base class for errors arising from attempts to release the lock.
134
+
135
+ >>> try:
136
+ ... raise UnlockError
137
+ ... except Error:
138
+ ... pass
139
+ """
140
+ pass
141
+
142
+
143
+ class NotLocked(UnlockError):
144
+ """Raised when an attempt is made to unlock an unlocked file.
145
+
146
+ >>> try:
147
+ ... raise NotLocked
148
+ ... except UnlockError:
149
+ ... pass
150
+ """
151
+ pass
152
+
153
+
154
+ class NotMyLock(UnlockError):
155
+ """Raised when an attempt is made to unlock a file someone else locked.
156
+
157
+ >>> try:
158
+ ... raise NotMyLock
159
+ ... except UnlockError:
160
+ ... pass
161
+ """
162
+ pass
163
+
164
+
165
+ class _SharedBase(object):
166
+ def __init__(self, path):
167
+ self.path = path
168
+
169
+ def acquire(self, timeout=None):
170
+ """
171
+ Acquire the lock.
172
+
173
+ * If timeout is omitted (or None), wait forever trying to lock the
174
+ file.
175
+
176
+ * If timeout > 0, try to acquire the lock for that many seconds. If
177
+ the lock period expires and the file is still locked, raise
178
+ LockTimeout.
179
+
180
+ * If timeout <= 0, raise AlreadyLocked immediately if the file is
181
+ already locked.
182
+ """
183
+ raise NotImplemented("implement in subclass")
184
+
185
+ def release(self):
186
+ """
187
+ Release the lock.
188
+
189
+ If the file is not locked, raise NotLocked.
190
+ """
191
+ raise NotImplemented("implement in subclass")
192
+
193
+ def __enter__(self):
194
+ """
195
+ Context manager support.
196
+ """
197
+ self.acquire()
198
+ return self
199
+
200
+ def __exit__(self, *_exc):
201
+ """
202
+ Context manager support.
203
+ """
204
+ self.release()
205
+
206
+ def __repr__(self):
207
+ return "<%s: %r>" % (self.__class__.__name__, self.path)
208
+
209
+
210
+ class LockBase(_SharedBase):
211
+ """Base class for platform-specific lock classes."""
212
+ def __init__(self, path, threaded=True, timeout=None):
213
+ """
214
+ >>> lock = LockBase('somefile')
215
+ >>> lock = LockBase('somefile', threaded=False)
216
+ """
217
+ super(LockBase, self).__init__(path)
218
+ self.lock_file = os.path.abspath(path) + ".lock"
219
+ self.hostname = socket.gethostname()
220
+ self.pid = os.getpid()
221
+ if threaded:
222
+ t = threading.current_thread()
223
+ # Thread objects in Python 2.4 and earlier do not have ident
224
+ # attrs. Worm around that.
225
+ ident = getattr(t, "ident", hash(t))
226
+ self.tname = "-%x" % (ident & 0xffffffff)
227
+ else:
228
+ self.tname = ""
229
+ dirname = os.path.dirname(self.lock_file)
230
+
231
+ # unique name is mostly about the current process, but must
232
+ # also contain the path -- otherwise, two adjacent locked
233
+ # files conflict (one file gets locked, creating lock-file and
234
+ # unique file, the other one gets locked, creating lock-file
235
+ # and overwriting the already existing lock-file, then one
236
+ # gets unlocked, deleting both lock-file and unique file,
237
+ # finally the last lock errors out upon releasing.
238
+ self.unique_name = os.path.join(dirname,
239
+ "%s%s.%s%s" % (self.hostname,
240
+ self.tname,
241
+ self.pid,
242
+ hash(self.path)))
243
+ self.timeout = timeout
244
+
245
+ def is_locked(self):
246
+ """
247
+ Tell whether or not the file is locked.
248
+ """
249
+ raise NotImplemented("implement in subclass")
250
+
251
+ def i_am_locking(self):
252
+ """
253
+ Return True if this object is locking the file.
254
+ """
255
+ raise NotImplemented("implement in subclass")
256
+
257
+ def break_lock(self):
258
+ """
259
+ Remove a lock. Useful if a locking thread failed to unlock.
260
+ """
261
+ raise NotImplemented("implement in subclass")
262
+
263
+ def __repr__(self):
264
+ return "<%s: %r -- %r>" % (self.__class__.__name__, self.unique_name,
265
+ self.path)
266
+
267
+
268
+ def _fl_helper(cls, mod, *args, **kwds):
269
+ warnings.warn("Import from %s module instead of lockfile package" % mod,
270
+ DeprecationWarning, stacklevel=2)
271
+ # This is a bit funky, but it's only for awhile. The way the unit tests
272
+ # are constructed this function winds up as an unbound method, so it
273
+ # actually takes three args, not two. We want to toss out self.
274
+ if not isinstance(args[0], str):
275
+ # We are testing, avoid the first arg
276
+ args = args[1:]
277
+ if len(args) == 1 and not kwds:
278
+ kwds["threaded"] = True
279
+ return cls(*args, **kwds)
280
+
281
+
282
+ def LinkFileLock(*args, **kwds):
283
+ """Factory function provided for backwards compatibility.
284
+
285
+ Do not use in new code. Instead, import LinkLockFile from the
286
+ lockfile.linklockfile module.
287
+ """
288
+ from . import linklockfile
289
+ return _fl_helper(linklockfile.LinkLockFile, "lockfile.linklockfile",
290
+ *args, **kwds)
291
+
292
+
293
+ def MkdirFileLock(*args, **kwds):
294
+ """Factory function provided for backwards compatibility.
295
+
296
+ Do not use in new code. Instead, import MkdirLockFile from the
297
+ lockfile.mkdirlockfile module.
298
+ """
299
+ from . import mkdirlockfile
300
+ return _fl_helper(mkdirlockfile.MkdirLockFile, "lockfile.mkdirlockfile",
301
+ *args, **kwds)
302
+
303
+
304
+ def SQLiteFileLock(*args, **kwds):
305
+ """Factory function provided for backwards compatibility.
306
+
307
+ Do not use in new code. Instead, import SQLiteLockFile from the
308
+ lockfile.mkdirlockfile module.
309
+ """
310
+ from . import sqlitelockfile
311
+ return _fl_helper(sqlitelockfile.SQLiteLockFile, "lockfile.sqlitelockfile",
312
+ *args, **kwds)
313
+
314
+
315
+ def locked(path, timeout=None):
316
+ """Decorator which enables locks for decorated function.
317
+
318
+ Arguments:
319
+ - path: path for lockfile.
320
+ - timeout (optional): Timeout for acquiring lock.
321
+
322
+ Usage:
323
+ @locked('/var/run/myname', timeout=0)
324
+ def myname(...):
325
+ ...
326
+ """
327
+ def decor(func):
328
+ @functools.wraps(func)
329
+ def wrapper(*args, **kwargs):
330
+ lock = FileLock(path, timeout=timeout)
331
+ lock.acquire()
332
+ try:
333
+ return func(*args, **kwargs)
334
+ finally:
335
+ lock.release()
336
+ return wrapper
337
+ return decor
338
+
339
+
340
+ if hasattr(os, "link"):
341
+ from . import linklockfile as _llf
342
+ LockFile = _llf.LinkLockFile
343
+ else:
344
+ from . import mkdirlockfile as _mlf
345
+ LockFile = _mlf.MkdirLockFile
346
+
347
+ FileLock = LockFile
@@ -0,0 +1,73 @@
1
+ from __future__ import absolute_import
2
+
3
+ import time
4
+ import os
5
+
6
+ from . import (LockBase, LockFailed, NotLocked, NotMyLock, LockTimeout,
7
+ AlreadyLocked)
8
+
9
+
10
+ class LinkLockFile(LockBase):
11
+ """Lock access to a file using atomic property of link(2).
12
+
13
+ >>> lock = LinkLockFile('somefile')
14
+ >>> lock = LinkLockFile('somefile', threaded=False)
15
+ """
16
+
17
+ def acquire(self, timeout=None):
18
+ try:
19
+ open(self.unique_name, "wb").close()
20
+ except IOError:
21
+ raise LockFailed("failed to create %s" % self.unique_name)
22
+
23
+ timeout = timeout if timeout is not None else self.timeout
24
+ end_time = time.time()
25
+ if timeout is not None and timeout > 0:
26
+ end_time += timeout
27
+
28
+ while True:
29
+ # Try and create a hard link to it.
30
+ try:
31
+ os.link(self.unique_name, self.lock_file)
32
+ except OSError:
33
+ # Link creation failed. Maybe we've double-locked?
34
+ nlinks = os.stat(self.unique_name).st_nlink
35
+ if nlinks == 2:
36
+ # The original link plus the one I created == 2. We're
37
+ # good to go.
38
+ return
39
+ else:
40
+ # Otherwise the lock creation failed.
41
+ if timeout is not None and time.time() > end_time:
42
+ os.unlink(self.unique_name)
43
+ if timeout > 0:
44
+ raise LockTimeout("Timeout waiting to acquire"
45
+ " lock for %s" %
46
+ self.path)
47
+ else:
48
+ raise AlreadyLocked("%s is already locked" %
49
+ self.path)
50
+ time.sleep(timeout is not None and timeout / 10 or 0.1)
51
+ else:
52
+ # Link creation succeeded. We're good to go.
53
+ return
54
+
55
+ def release(self):
56
+ if not self.is_locked():
57
+ raise NotLocked("%s is not locked" % self.path)
58
+ elif not os.path.exists(self.unique_name):
59
+ raise NotMyLock("%s is locked, but not by me" % self.path)
60
+ os.unlink(self.unique_name)
61
+ os.unlink(self.lock_file)
62
+
63
+ def is_locked(self):
64
+ return os.path.exists(self.lock_file)
65
+
66
+ def i_am_locking(self):
67
+ return (self.is_locked() and
68
+ os.path.exists(self.unique_name) and
69
+ os.stat(self.unique_name).st_nlink == 2)
70
+
71
+ def break_lock(self):
72
+ if os.path.exists(self.lock_file):
73
+ os.unlink(self.lock_file)
@@ -0,0 +1,84 @@
1
+ from __future__ import absolute_import, division
2
+
3
+ import time
4
+ import os
5
+ import sys
6
+ import errno
7
+
8
+ from . import (LockBase, LockFailed, NotLocked, NotMyLock, LockTimeout,
9
+ AlreadyLocked)
10
+
11
+
12
+ class MkdirLockFile(LockBase):
13
+ """Lock file by creating a directory."""
14
+ def __init__(self, path, threaded=True, timeout=None):
15
+ """
16
+ >>> lock = MkdirLockFile('somefile')
17
+ >>> lock = MkdirLockFile('somefile', threaded=False)
18
+ """
19
+ LockBase.__init__(self, path, threaded, timeout)
20
+ # Lock file itself is a directory. Place the unique file name into
21
+ # it.
22
+ self.unique_name = os.path.join(self.lock_file,
23
+ "%s.%s%s" % (self.hostname,
24
+ self.tname,
25
+ self.pid))
26
+
27
+ def acquire(self, timeout=None):
28
+ timeout = timeout if timeout is not None else self.timeout
29
+ end_time = time.time()
30
+ if timeout is not None and timeout > 0:
31
+ end_time += timeout
32
+
33
+ if timeout is None:
34
+ wait = 0.1
35
+ else:
36
+ wait = max(0, timeout / 10)
37
+
38
+ while True:
39
+ try:
40
+ os.mkdir(self.lock_file)
41
+ except OSError:
42
+ err = sys.exc_info()[1]
43
+ if err.errno == errno.EEXIST:
44
+ # Already locked.
45
+ if os.path.exists(self.unique_name):
46
+ # Already locked by me.
47
+ return
48
+ if timeout is not None and time.time() > end_time:
49
+ if timeout > 0:
50
+ raise LockTimeout("Timeout waiting to acquire"
51
+ " lock for %s" %
52
+ self.path)
53
+ else:
54
+ # Someone else has the lock.
55
+ raise AlreadyLocked("%s is already locked" %
56
+ self.path)
57
+ time.sleep(wait)
58
+ else:
59
+ # Couldn't create the lock for some other reason
60
+ raise LockFailed("failed to create %s" % self.lock_file)
61
+ else:
62
+ open(self.unique_name, "wb").close()
63
+ return
64
+
65
+ def release(self):
66
+ if not self.is_locked():
67
+ raise NotLocked("%s is not locked" % self.path)
68
+ elif not os.path.exists(self.unique_name):
69
+ raise NotMyLock("%s is locked, but not by me" % self.path)
70
+ os.unlink(self.unique_name)
71
+ os.rmdir(self.lock_file)
72
+
73
+ def is_locked(self):
74
+ return os.path.exists(self.lock_file)
75
+
76
+ def i_am_locking(self):
77
+ return (self.is_locked() and
78
+ os.path.exists(self.unique_name))
79
+
80
+ def break_lock(self):
81
+ if os.path.exists(self.lock_file):
82
+ for name in os.listdir(self.lock_file):
83
+ os.unlink(os.path.join(self.lock_file, name))
84
+ os.rmdir(self.lock_file)
@@ -0,0 +1,190 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # pidlockfile.py
4
+ #
5
+ # Copyright © 2008–2009 Ben Finney <ben+python@benfinney.id.au>
6
+ #
7
+ # This is free software: you may copy, modify, and/or distribute this work
8
+ # under the terms of the Python Software Foundation License, version 2 or
9
+ # later as published by the Python Software Foundation.
10
+ # No warranty expressed or implied. See the file LICENSE.PSF-2 for details.
11
+
12
+ """ Lockfile behaviour implemented via Unix PID files.
13
+ """
14
+
15
+ from __future__ import absolute_import
16
+
17
+ import errno
18
+ import os
19
+ import time
20
+
21
+ from . import (LockBase, AlreadyLocked, LockFailed, NotLocked, NotMyLock,
22
+ LockTimeout)
23
+
24
+
25
+ class PIDLockFile(LockBase):
26
+ """ Lockfile implemented as a Unix PID file.
27
+
28
+ The lock file is a normal file named by the attribute `path`.
29
+ A lock's PID file contains a single line of text, containing
30
+ the process ID (PID) of the process that acquired the lock.
31
+
32
+ >>> lock = PIDLockFile('somefile')
33
+ >>> lock = PIDLockFile('somefile')
34
+ """
35
+
36
+ def __init__(self, path, threaded=False, timeout=None):
37
+ # pid lockfiles don't support threaded operation, so always force
38
+ # False as the threaded arg.
39
+ LockBase.__init__(self, path, False, timeout)
40
+ self.unique_name = self.path
41
+
42
+ def read_pid(self):
43
+ """ Get the PID from the lock file.
44
+ """
45
+ return read_pid_from_pidfile(self.path)
46
+
47
+ def is_locked(self):
48
+ """ Test if the lock is currently held.
49
+
50
+ The lock is held if the PID file for this lock exists.
51
+
52
+ """
53
+ return os.path.exists(self.path)
54
+
55
+ def i_am_locking(self):
56
+ """ Test if the lock is held by the current process.
57
+
58
+ Returns ``True`` if the current process ID matches the
59
+ number stored in the PID file.
60
+ """
61
+ return self.is_locked() and os.getpid() == self.read_pid()
62
+
63
+ def acquire(self, timeout=None):
64
+ """ Acquire the lock.
65
+
66
+ Creates the PID file for this lock, or raises an error if
67
+ the lock could not be acquired.
68
+ """
69
+
70
+ timeout = timeout if timeout is not None else self.timeout
71
+ end_time = time.time()
72
+ if timeout is not None and timeout > 0:
73
+ end_time += timeout
74
+
75
+ while True:
76
+ try:
77
+ write_pid_to_pidfile(self.path)
78
+ except OSError as exc:
79
+ if exc.errno == errno.EEXIST:
80
+ # The lock creation failed. Maybe sleep a bit.
81
+ if time.time() > end_time:
82
+ if timeout is not None and timeout > 0:
83
+ raise LockTimeout("Timeout waiting to acquire"
84
+ " lock for %s" %
85
+ self.path)
86
+ else:
87
+ raise AlreadyLocked("%s is already locked" %
88
+ self.path)
89
+ time.sleep(timeout is not None and timeout / 10 or 0.1)
90
+ else:
91
+ raise LockFailed("failed to create %s" % self.path)
92
+ else:
93
+ return
94
+
95
+ def release(self):
96
+ """ Release the lock.
97
+
98
+ Removes the PID file to release the lock, or raises an
99
+ error if the current process does not hold the lock.
100
+
101
+ """
102
+ if not self.is_locked():
103
+ raise NotLocked("%s is not locked" % self.path)
104
+ if not self.i_am_locking():
105
+ raise NotMyLock("%s is locked, but not by me" % self.path)
106
+ remove_existing_pidfile(self.path)
107
+
108
+ def break_lock(self):
109
+ """ Break an existing lock.
110
+
111
+ Removes the PID file if it already exists, otherwise does
112
+ nothing.
113
+
114
+ """
115
+ remove_existing_pidfile(self.path)
116
+
117
+
118
+ def read_pid_from_pidfile(pidfile_path):
119
+ """ Read the PID recorded in the named PID file.
120
+
121
+ Read and return the numeric PID recorded as text in the named
122
+ PID file. If the PID file cannot be read, or if the content is
123
+ not a valid PID, return ``None``.
124
+
125
+ """
126
+ pid = None
127
+ try:
128
+ pidfile = open(pidfile_path, 'r')
129
+ except IOError:
130
+ pass
131
+ else:
132
+ # According to the FHS 2.3 section on PID files in /var/run:
133
+ #
134
+ # The file must consist of the process identifier in
135
+ # ASCII-encoded decimal, followed by a newline character.
136
+ #
137
+ # Programs that read PID files should be somewhat flexible
138
+ # in what they accept; i.e., they should ignore extra
139
+ # whitespace, leading zeroes, absence of the trailing
140
+ # newline, or additional lines in the PID file.
141
+
142
+ line = pidfile.readline().strip()
143
+ try:
144
+ pid = int(line)
145
+ except ValueError:
146
+ pass
147
+ pidfile.close()
148
+
149
+ return pid
150
+
151
+
152
+ def write_pid_to_pidfile(pidfile_path):
153
+ """ Write the PID in the named PID file.
154
+
155
+ Get the numeric process ID (“PID”) of the current process
156
+ and write it to the named file as a line of text.
157
+
158
+ """
159
+ open_flags = (os.O_CREAT | os.O_EXCL | os.O_WRONLY)
160
+ open_mode = 0o644
161
+ pidfile_fd = os.open(pidfile_path, open_flags, open_mode)
162
+ pidfile = os.fdopen(pidfile_fd, 'w')
163
+
164
+ # According to the FHS 2.3 section on PID files in /var/run:
165
+ #
166
+ # The file must consist of the process identifier in
167
+ # ASCII-encoded decimal, followed by a newline character. For
168
+ # example, if crond was process number 25, /var/run/crond.pid
169
+ # would contain three characters: two, five, and newline.
170
+
171
+ pid = os.getpid()
172
+ pidfile.write("%s\n" % pid)
173
+ pidfile.close()
174
+
175
+
176
+ def remove_existing_pidfile(pidfile_path):
177
+ """ Remove the named PID file if it exists.
178
+
179
+ Removing a PID file that doesn't already exist puts us in the
180
+ desired state, so we ignore the condition if the file does not
181
+ exist.
182
+
183
+ """
184
+ try:
185
+ os.remove(pidfile_path)
186
+ except OSError as exc:
187
+ if exc.errno == errno.ENOENT:
188
+ pass
189
+ else:
190
+ raise