libv8 6.7.288.46.1 → 7.3.492.27.0beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (408) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/CHANGELOG.md +4 -0
  4. data/README.md +2 -0
  5. data/ext/libv8/builder.rb +6 -2
  6. data/lib/libv8/version.rb +1 -1
  7. data/vendor/depot_tools/.gitattributes +1 -0
  8. data/vendor/depot_tools/.gitignore +7 -0
  9. data/vendor/depot_tools/CROS_OWNERS +5 -0
  10. data/vendor/depot_tools/OWNERS +12 -1
  11. data/vendor/depot_tools/PRESUBMIT.py +16 -9
  12. data/vendor/depot_tools/README.md +9 -2
  13. data/vendor/depot_tools/autoninja +14 -6
  14. data/vendor/depot_tools/autoninja.bat +11 -1
  15. data/vendor/depot_tools/autoninja.py +40 -18
  16. data/vendor/depot_tools/bb +12 -0
  17. data/vendor/depot_tools/bb.bat +7 -0
  18. data/vendor/depot_tools/bootstrap/win/manifest.txt +1 -1
  19. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +1 -1
  20. data/vendor/depot_tools/bootstrap/win/win_tools.py +2 -1
  21. data/vendor/depot_tools/buildbucket.py +57 -4
  22. data/vendor/depot_tools/cipd +157 -44
  23. data/vendor/depot_tools/cipd.bat +51 -14
  24. data/vendor/depot_tools/cipd.ps1 +104 -42
  25. data/vendor/depot_tools/cipd_client_version +1 -1
  26. data/vendor/depot_tools/cipd_client_version.digests +21 -0
  27. data/vendor/depot_tools/cipd_manifest.txt +19 -6
  28. data/vendor/depot_tools/cipd_manifest.versions +318 -0
  29. data/vendor/depot_tools/clang_format.py +4 -4
  30. data/vendor/depot_tools/cpplint.py +44 -199
  31. data/vendor/depot_tools/dart_format.py +2 -2
  32. data/vendor/depot_tools/detect_host_arch.py +8 -3
  33. data/vendor/depot_tools/download_from_google_storage.py +47 -39
  34. data/vendor/depot_tools/fetch.py +30 -18
  35. data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
  36. data/vendor/depot_tools/fetch_configs/chromium.py +18 -1
  37. data/vendor/depot_tools/fetch_configs/config_util.py +4 -2
  38. data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
  39. data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
  40. data/vendor/depot_tools/fix_encoding.py +3 -3
  41. data/vendor/depot_tools/gclient +1 -1
  42. data/vendor/depot_tools/gclient.py +415 -198
  43. data/vendor/depot_tools/gclient_eval.py +220 -171
  44. data/vendor/depot_tools/gclient_paths.py +142 -0
  45. data/vendor/depot_tools/gclient_scm.py +200 -51
  46. data/vendor/depot_tools/gclient_utils.py +88 -191
  47. data/vendor/depot_tools/gerrit_client.py +13 -0
  48. data/vendor/depot_tools/gerrit_util.py +158 -23
  49. data/vendor/depot_tools/git-nav-upstream +1 -1
  50. data/vendor/depot_tools/git_cache.py +77 -24
  51. data/vendor/depot_tools/git_cl.py +705 -1099
  52. data/vendor/depot_tools/git_common.py +9 -6
  53. data/vendor/depot_tools/git_map_branches.py +19 -2
  54. data/vendor/depot_tools/git_nav_downstream.py +3 -4
  55. data/vendor/depot_tools/git_rebase_update.py +14 -0
  56. data/vendor/depot_tools/git_reparent_branch.py +8 -2
  57. data/vendor/depot_tools/gn.py +38 -3
  58. data/vendor/depot_tools/gsutil.py +8 -3
  59. data/vendor/depot_tools/gsutil.py.bat +15 -0
  60. data/vendor/depot_tools/gsutil.vpython +16 -0
  61. data/vendor/depot_tools/infra/config/OWNERS +0 -1
  62. data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
  63. data/vendor/depot_tools/lucicfg +12 -0
  64. data/vendor/depot_tools/lucicfg.bat +7 -0
  65. data/vendor/depot_tools/man/html/git-map-branches.html +34 -2
  66. data/vendor/depot_tools/man/html/git-new-branch.html +40 -32
  67. data/vendor/depot_tools/man/man1/git-map-branches.1 +24 -5
  68. data/vendor/depot_tools/man/man1/git-new-branch.1 +35 -27
  69. data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +1 -0
  70. data/vendor/depot_tools/man/src/git-map-branches.txt +10 -0
  71. data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +9 -4
  72. data/vendor/depot_tools/man/src/git-new-branch.txt +1 -1
  73. data/vendor/depot_tools/metrics.README.md +98 -0
  74. data/vendor/depot_tools/metrics.py +296 -0
  75. data/vendor/depot_tools/metrics_utils.py +303 -0
  76. data/vendor/depot_tools/my_activity.py +91 -29
  77. data/vendor/depot_tools/ninja +1 -1
  78. data/vendor/depot_tools/ninjalog.README.md +64 -0
  79. data/vendor/depot_tools/ninjalog_uploader.py +232 -0
  80. data/vendor/depot_tools/ninjalog_uploader_wrapper.py +116 -0
  81. data/vendor/depot_tools/owners.py +30 -13
  82. data/vendor/depot_tools/owners_finder.py +5 -2
  83. data/vendor/depot_tools/presubmit_canned_checks.py +188 -29
  84. data/vendor/depot_tools/presubmit_support.py +18 -41
  85. data/vendor/depot_tools/pylintrc +23 -19
  86. data/vendor/depot_tools/recipes/OWNERS +2 -0
  87. data/vendor/depot_tools/recipes/README.recipes.md +344 -151
  88. data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
  89. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +2 -16
  90. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +141 -99
  91. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +5 -8
  92. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +5 -8
  93. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +6 -98
  94. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +4 -9
  95. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +45 -5
  96. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +4 -9
  97. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +4 -9
  98. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob.json → input_commit_with_id_without_repo.json} +6 -11
  99. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob_empty_revision.json → multiple_patch_refs.json} +8 -9
  100. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +19 -29
  101. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{trychange.json → refs.json} +4 -9
  102. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +4 -9
  103. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +51 -6
  104. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +50 -6
  105. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +51 -6
  106. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +17 -25
  107. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +17 -25
  108. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +18 -26
  109. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +18 -26
  110. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +26 -28
  111. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +45 -5
  112. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +17 -25
  113. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +13 -0
  114. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name.json +13 -152
  115. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +4 -9
  116. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +185 -202
  117. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +52 -157
  118. data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +5 -14
  119. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +34 -0
  120. data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +14 -2
  121. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +4 -5
  122. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +4 -5
  123. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +7 -5
  124. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +4 -5
  125. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +4 -5
  126. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +9 -3
  127. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +9 -3
  128. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +9 -3
  129. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +4 -5
  130. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +2 -3
  131. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +2 -3
  132. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +2 -3
  133. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +2 -3
  134. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +2 -3
  135. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +2 -3
  136. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +2 -3
  137. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +2 -3
  138. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +2 -3
  139. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +2 -3
  140. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +13 -8
  141. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +18 -12
  142. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +18 -12
  143. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +18 -12
  144. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +3 -0
  145. data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +1 -0
  146. data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +58 -46
  147. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +65 -22
  148. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +20 -21
  149. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +20 -21
  150. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +20 -21
  151. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +20 -21
  152. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +5 -2
  153. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +62 -14
  154. data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +24 -38
  155. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +56 -50
  156. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +15 -9
  157. data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +4 -1
  158. data/vendor/depot_tools/recipes/recipe_modules/git/api.py +34 -22
  159. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +5 -6
  160. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +5 -6
  161. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +5 -6
  162. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +5 -6
  163. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +222 -0
  164. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +5 -6
  165. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +5 -6
  166. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +224 -0
  167. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +10 -6
  168. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +5 -7
  169. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +5 -6
  170. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +5 -6
  171. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +5 -7
  172. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +5 -6
  173. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +10 -5
  174. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +5 -6
  175. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +8 -9
  176. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +5 -6
  177. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +12 -8
  178. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +5 -6
  179. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +5 -6
  180. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +27 -11
  181. data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +1 -1
  182. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +12 -13
  183. data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +5 -0
  184. data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +120 -5
  185. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +45 -3
  186. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +25 -0
  187. data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +56 -4
  188. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +6 -0
  189. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
  190. data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +24 -13
  191. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +13 -14
  192. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +2 -3
  193. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +2 -3
  194. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +2 -3
  195. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +2 -3
  196. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +2 -3
  197. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +2 -3
  198. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +2 -3
  199. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +2 -3
  200. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +2 -3
  201. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +2 -3
  202. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +1 -2
  203. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +35 -0
  204. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +116 -0
  205. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +22 -0
  206. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +82 -0
  207. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +22 -0
  208. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +23 -0
  209. data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +1 -0
  210. data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +2 -7
  211. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +7 -6
  212. data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +1 -0
  213. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +117 -8
  214. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +4 -5
  215. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +7 -4
  216. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +98 -7
  217. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +147 -0
  218. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +8 -5
  219. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +8 -5
  220. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +9 -6
  221. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +9 -6
  222. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +27 -2
  223. data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
  224. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/__init__.py +25 -0
  225. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
  226. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +22 -0
  227. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +22 -0
  228. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +107 -0
  229. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +26 -0
  230. data/vendor/depot_tools/recipes/recipes.py +37 -27
  231. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +7 -10
  232. data/vendor/depot_tools/repo +34 -8
  233. data/vendor/depot_tools/roll_dep.py +52 -49
  234. data/vendor/depot_tools/scm.py +38 -23
  235. data/vendor/depot_tools/setup_color.py +4 -2
  236. data/vendor/depot_tools/split_cl.py +32 -4
  237. data/vendor/depot_tools/subprocess2.py +22 -4
  238. data/vendor/depot_tools/third_party/httplib2/README.chromium +2 -2
  239. data/vendor/depot_tools/third_party/httplib2/__init__.py +242 -158
  240. data/vendor/depot_tools/third_party/httplib2/cacerts.txt +57 -44
  241. data/vendor/depot_tools/third_party/httplib2/socks.py +15 -5
  242. data/vendor/depot_tools/third_party/logilab/README.chromium +2 -4
  243. data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +2 -1
  244. data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +10 -5
  245. data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +5 -5
  246. data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +233 -0
  247. data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +82 -33
  248. data/vendor/depot_tools/third_party/logilab/astroid/bases.py +137 -153
  249. data/vendor/depot_tools/third_party/logilab/astroid/brain/{builtin_inference.py → brain_builtin_inference.py} +117 -26
  250. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +15 -0
  251. data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2gi.py → brain_gi.py} +48 -8
  252. data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2mechanize.py → brain_mechanize.py} +0 -0
  253. data/vendor/depot_tools/third_party/logilab/astroid/brain/{pynose.py → brain_nose.py} +4 -1
  254. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +62 -0
  255. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +76 -0
  256. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +44 -0
  257. data/vendor/depot_tools/third_party/logilab/astroid/brain/{pysix_moves.py → brain_six.py} +28 -1
  258. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +65 -0
  259. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +473 -0
  260. data/vendor/depot_tools/third_party/logilab/astroid/builder.py +104 -81
  261. data/vendor/depot_tools/third_party/logilab/astroid/context.py +81 -0
  262. data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +75 -0
  263. data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +20 -0
  264. data/vendor/depot_tools/third_party/logilab/astroid/inference.py +137 -183
  265. data/vendor/depot_tools/third_party/logilab/astroid/manager.py +45 -169
  266. data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +37 -14
  267. data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +112 -41
  268. data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +243 -156
  269. data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +35 -22
  270. data/vendor/depot_tools/third_party/logilab/astroid/objects.py +186 -0
  271. data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +157 -102
  272. data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +32 -8
  273. data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +372 -309
  274. data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +652 -420
  275. data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +4 -21
  276. data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +96 -0
  277. data/vendor/depot_tools/third_party/logilab/astroid/util.py +89 -0
  278. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +19 -0
  279. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +11 -0
  280. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +20 -0
  281. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +1421 -0
  282. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +9 -0
  283. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +246 -0
  284. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +414 -0
  285. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +13 -0
  286. data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +24 -0
  287. data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +11 -0
  288. data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +19 -0
  289. data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +2729 -0
  290. data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +96 -0
  291. data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +512 -0
  292. data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +228 -0
  293. data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +901 -0
  294. data/vendor/depot_tools/third_party/pylint/README.chromium +2 -25
  295. data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +13 -3
  296. data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +1 -2
  297. data/vendor/depot_tools/third_party/pylint/checkers/async.py +82 -0
  298. data/vendor/depot_tools/third_party/pylint/checkers/base.py +893 -119
  299. data/vendor/depot_tools/third_party/pylint/checkers/classes.py +342 -204
  300. data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +51 -34
  301. data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +84 -47
  302. data/vendor/depot_tools/third_party/pylint/checkers/format.py +55 -30
  303. data/vendor/depot_tools/third_party/pylint/checkers/imports.py +314 -73
  304. data/vendor/depot_tools/third_party/pylint/checkers/logging.py +10 -8
  305. data/vendor/depot_tools/third_party/pylint/checkers/misc.py +2 -1
  306. data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +45 -48
  307. data/vendor/depot_tools/third_party/pylint/checkers/python3.py +31 -21
  308. data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +3 -3
  309. data/vendor/depot_tools/third_party/pylint/checkers/similar.py +4 -5
  310. data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +24 -10
  311. data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +120 -56
  312. data/vendor/depot_tools/third_party/pylint/checkers/strings.py +38 -35
  313. data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +485 -138
  314. data/vendor/depot_tools/third_party/pylint/checkers/utils.py +319 -142
  315. data/vendor/depot_tools/third_party/pylint/checkers/variables.py +329 -207
  316. data/vendor/depot_tools/third_party/pylint/config.py +739 -76
  317. data/vendor/depot_tools/third_party/pylint/epylint.py +9 -5
  318. data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
  319. data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +311 -0
  320. data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +62 -0
  321. data/vendor/depot_tools/third_party/{logilab/common → pylint}/graph.py +30 -133
  322. data/vendor/depot_tools/third_party/pylint/gui.py +2 -2
  323. data/vendor/depot_tools/third_party/pylint/interfaces.py +21 -3
  324. data/vendor/depot_tools/third_party/pylint/lint.py +123 -140
  325. data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +10 -13
  326. data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +15 -4
  327. data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +372 -0
  328. data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +30 -7
  329. data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +80 -2
  330. data/vendor/depot_tools/third_party/{logilab/common → pylint/pyreverse}/vcgutils.py +19 -37
  331. data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +3 -4
  332. data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +34 -18
  333. data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +1 -1
  334. data/vendor/depot_tools/third_party/pylint/reporters/html.py +10 -3
  335. data/vendor/depot_tools/third_party/pylint/reporters/json.py +10 -4
  336. data/vendor/depot_tools/third_party/pylint/reporters/text.py +94 -3
  337. data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +106 -0
  338. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/html_writer.py +17 -57
  339. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/nodes.py +52 -74
  340. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/text_writer.py +14 -60
  341. data/vendor/depot_tools/third_party/pylint/testutils.py +22 -20
  342. data/vendor/depot_tools/third_party/pylint/utils.py +268 -44
  343. data/vendor/depot_tools/third_party/repo/progress.py +42 -0
  344. data/vendor/depot_tools/update_depot_tools +1 -1
  345. data/vendor/depot_tools/upload_metrics.py +25 -0
  346. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +45 -15
  347. data/vendor/depot_tools/win_toolchain/package_from_installed.py +71 -24
  348. data/vendor/depot_tools/yapf +1 -1
  349. data/vendor/depot_tools/yapf.bat +1 -1
  350. metadata +92 -77
  351. data/vendor/depot_tools/git-crsync +0 -3
  352. data/vendor/depot_tools/infra/config/cq.cfg +0 -32
  353. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref.json +0 -29
  354. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json +0 -29
  355. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/buildbot.json +0 -105
  356. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/shallow.json +0 -195
  357. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle_deprecated.json +0 -248
  358. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8.json +0 -248
  359. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name_no_patch.json +0 -105
  360. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/apply_gerrit.py +0 -33
  361. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2pytest.py +0 -31
  362. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2qt4.py +0 -22
  363. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2stdlib.py +0 -334
  364. data/vendor/depot_tools/third_party/logilab/astroid/inspector.py +0 -273
  365. data/vendor/depot_tools/third_party/logilab/astroid/utils.py +0 -239
  366. data/vendor/depot_tools/third_party/logilab/common/LICENSE.txt +0 -339
  367. data/vendor/depot_tools/third_party/logilab/common/README.chromium +0 -11
  368. data/vendor/depot_tools/third_party/logilab/common/__init__.py +0 -175
  369. data/vendor/depot_tools/third_party/logilab/common/__pkginfo__.py +0 -57
  370. data/vendor/depot_tools/third_party/logilab/common/cache.py +0 -114
  371. data/vendor/depot_tools/third_party/logilab/common/changelog.py +0 -238
  372. data/vendor/depot_tools/third_party/logilab/common/clcommands.py +0 -334
  373. data/vendor/depot_tools/third_party/logilab/common/cli.py +0 -211
  374. data/vendor/depot_tools/third_party/logilab/common/compat.py +0 -78
  375. data/vendor/depot_tools/third_party/logilab/common/configuration.py +0 -1105
  376. data/vendor/depot_tools/third_party/logilab/common/contexts.py +0 -5
  377. data/vendor/depot_tools/third_party/logilab/common/corbautils.py +0 -117
  378. data/vendor/depot_tools/third_party/logilab/common/daemon.py +0 -101
  379. data/vendor/depot_tools/third_party/logilab/common/date.py +0 -335
  380. data/vendor/depot_tools/third_party/logilab/common/dbf.py +0 -231
  381. data/vendor/depot_tools/third_party/logilab/common/debugger.py +0 -214
  382. data/vendor/depot_tools/third_party/logilab/common/decorators.py +0 -281
  383. data/vendor/depot_tools/third_party/logilab/common/deprecation.py +0 -189
  384. data/vendor/depot_tools/third_party/logilab/common/fileutils.py +0 -404
  385. data/vendor/depot_tools/third_party/logilab/common/interface.py +0 -71
  386. data/vendor/depot_tools/third_party/logilab/common/logging_ext.py +0 -195
  387. data/vendor/depot_tools/third_party/logilab/common/modutils.py +0 -702
  388. data/vendor/depot_tools/third_party/logilab/common/optik_ext.py +0 -392
  389. data/vendor/depot_tools/third_party/logilab/common/optparser.py +0 -92
  390. data/vendor/depot_tools/third_party/logilab/common/proc.py +0 -277
  391. data/vendor/depot_tools/third_party/logilab/common/pyro_ext.py +0 -180
  392. data/vendor/depot_tools/third_party/logilab/common/pytest.py +0 -1199
  393. data/vendor/depot_tools/third_party/logilab/common/registry.py +0 -1119
  394. data/vendor/depot_tools/third_party/logilab/common/shellutils.py +0 -462
  395. data/vendor/depot_tools/third_party/logilab/common/sphinx_ext.py +0 -87
  396. data/vendor/depot_tools/third_party/logilab/common/sphinxutils.py +0 -122
  397. data/vendor/depot_tools/third_party/logilab/common/table.py +0 -929
  398. data/vendor/depot_tools/third_party/logilab/common/tasksqueue.py +0 -101
  399. data/vendor/depot_tools/third_party/logilab/common/testlib.py +0 -1392
  400. data/vendor/depot_tools/third_party/logilab/common/textutils.py +0 -537
  401. data/vendor/depot_tools/third_party/logilab/common/tree.py +0 -369
  402. data/vendor/depot_tools/third_party/logilab/common/umessage.py +0 -194
  403. data/vendor/depot_tools/third_party/logilab/common/ureports/__init__.py +0 -172
  404. data/vendor/depot_tools/third_party/logilab/common/ureports/docbook_writer.py +0 -140
  405. data/vendor/depot_tools/third_party/logilab/common/urllib2ext.py +0 -89
  406. data/vendor/depot_tools/third_party/logilab/common/visitor.py +0 -109
  407. data/vendor/depot_tools/third_party/logilab/common/xmlrpcutils.py +0 -131
  408. data/vendor/depot_tools/third_party/logilab/common/xmlutils.py +0 -61
@@ -0,0 +1,44 @@
1
+ """Astroid hooks for the PyQT library."""
2
+
3
+ from astroid import MANAGER, register_module_extender
4
+ from astroid.builder import AstroidBuilder
5
+ from astroid import nodes
6
+ from astroid import parse
7
+
8
+
9
+ def _looks_like_signal(node, signal_name='pyqtSignal'):
10
+ if '__class__' in node._instance_attrs:
11
+ cls = node._instance_attrs['__class__'][0]
12
+ return cls.name == signal_name
13
+ return False
14
+
15
+
16
+ def transform_pyqt_signal(node):
17
+ module = parse('''
18
+ class pyqtSignal(object):
19
+ def connect(self, slot, type=None, no_receiver_check=False):
20
+ pass
21
+ def disconnect(self, slot):
22
+ pass
23
+ def emit(self, *args):
24
+ pass
25
+ ''')
26
+ signal_cls = module['pyqtSignal']
27
+ node._instance_attrs['emit'] = signal_cls['emit']
28
+ node._instance_attrs['disconnect'] = signal_cls['disconnect']
29
+ node._instance_attrs['connect'] = signal_cls['connect']
30
+
31
+
32
+ def pyqt4_qtcore_transform():
33
+ return AstroidBuilder(MANAGER).string_build('''
34
+
35
+ def SIGNAL(signal_name): pass
36
+
37
+ class QObject(object):
38
+ def emit(self, signal): pass
39
+ ''')
40
+
41
+
42
+ register_module_extender(MANAGER, 'PyQt4.QtCore', pyqt4_qtcore_transform)
43
+ MANAGER.register_transform(nodes.FunctionDef, transform_pyqt_signal,
44
+ _looks_like_signal)
@@ -23,7 +23,12 @@ from textwrap import dedent
23
23
 
24
24
  from astroid import MANAGER, register_module_extender
25
25
  from astroid.builder import AstroidBuilder
26
- from astroid.exceptions import AstroidBuildingException
26
+ from astroid.exceptions import AstroidBuildingException, InferenceError
27
+ from astroid import nodes
28
+
29
+
30
+ SIX_ADD_METACLASS = 'six.add_metaclass'
31
+
27
32
 
28
33
  def _indent(text, prefix, predicate=None):
29
34
  """Adds 'prefix' to the beginning of selected lines in 'text'.
@@ -254,8 +259,30 @@ def _six_fail_hook(modname):
254
259
  module.name = 'six.moves'
255
260
  return module
256
261
 
262
+ def transform_six_add_metaclass(node):
263
+ """Check if the given class node is decorated with *six.add_metaclass*
264
+
265
+ If so, inject its argument as the metaclass of the underlying class.
266
+ """
267
+ if not node.decorators:
268
+ return
269
+
270
+ for decorator in node.decorators.nodes:
271
+ if not isinstance(decorator, nodes.Call):
272
+ continue
273
+
274
+ try:
275
+ func = next(decorator.func.infer())
276
+ except InferenceError:
277
+ continue
278
+ if func.qname() == SIX_ADD_METACLASS and decorator.args:
279
+ metaclass = decorator.args[0]
280
+ node._metaclass = metaclass
281
+ return node
282
+
257
283
 
258
284
  register_module_extender(MANAGER, 'six', six_moves_transform)
259
285
  register_module_extender(MANAGER, 'requests.packages.urllib3.packages.six',
260
286
  six_moves_transform)
261
287
  MANAGER.register_failed_import_hook(_six_fail_hook)
288
+ MANAGER.register_transform(nodes.ClassDef, transform_six_add_metaclass)
@@ -0,0 +1,65 @@
1
+ """Astroid hooks for the ssl library."""
2
+
3
+ from astroid import MANAGER, register_module_extender
4
+ from astroid.builder import AstroidBuilder
5
+ from astroid import nodes
6
+ from astroid import parse
7
+
8
+
9
+ def ssl_transform():
10
+ return parse('''
11
+ from _ssl import OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_INFO, OPENSSL_VERSION
12
+ from _ssl import _SSLContext, MemoryBIO
13
+ from _ssl import (
14
+ SSLError, SSLZeroReturnError, SSLWantReadError, SSLWantWriteError,
15
+ SSLSyscallError, SSLEOFError,
16
+ )
17
+ from _ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED
18
+ from _ssl import txt2obj as _txt2obj, nid2obj as _nid2obj
19
+ from _ssl import RAND_status, RAND_add, RAND_bytes, RAND_pseudo_bytes
20
+ try:
21
+ from _ssl import RAND_egd
22
+ except ImportError:
23
+ # LibreSSL does not provide RAND_egd
24
+ pass
25
+ from _ssl import (OP_ALL, OP_CIPHER_SERVER_PREFERENCE,
26
+ OP_NO_COMPRESSION, OP_NO_SSLv2, OP_NO_SSLv3,
27
+ OP_NO_TLSv1, OP_NO_TLSv1_1, OP_NO_TLSv1_2,
28
+ OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE)
29
+
30
+ from _ssl import (ALERT_DESCRIPTION_ACCESS_DENIED, ALERT_DESCRIPTION_BAD_CERTIFICATE,
31
+ ALERT_DESCRIPTION_BAD_CERTIFICATE_HASH_VALUE,
32
+ ALERT_DESCRIPTION_BAD_CERTIFICATE_STATUS_RESPONSE,
33
+ ALERT_DESCRIPTION_BAD_RECORD_MAC,
34
+ ALERT_DESCRIPTION_CERTIFICATE_EXPIRED,
35
+ ALERT_DESCRIPTION_CERTIFICATE_REVOKED,
36
+ ALERT_DESCRIPTION_CERTIFICATE_UNKNOWN,
37
+ ALERT_DESCRIPTION_CERTIFICATE_UNOBTAINABLE,
38
+ ALERT_DESCRIPTION_CLOSE_NOTIFY, ALERT_DESCRIPTION_DECODE_ERROR,
39
+ ALERT_DESCRIPTION_DECOMPRESSION_FAILURE,
40
+ ALERT_DESCRIPTION_DECRYPT_ERROR,
41
+ ALERT_DESCRIPTION_HANDSHAKE_FAILURE,
42
+ ALERT_DESCRIPTION_ILLEGAL_PARAMETER,
43
+ ALERT_DESCRIPTION_INSUFFICIENT_SECURITY,
44
+ ALERT_DESCRIPTION_INTERNAL_ERROR,
45
+ ALERT_DESCRIPTION_NO_RENEGOTIATION,
46
+ ALERT_DESCRIPTION_PROTOCOL_VERSION,
47
+ ALERT_DESCRIPTION_RECORD_OVERFLOW,
48
+ ALERT_DESCRIPTION_UNEXPECTED_MESSAGE,
49
+ ALERT_DESCRIPTION_UNKNOWN_CA,
50
+ ALERT_DESCRIPTION_UNKNOWN_PSK_IDENTITY,
51
+ ALERT_DESCRIPTION_UNRECOGNIZED_NAME,
52
+ ALERT_DESCRIPTION_UNSUPPORTED_CERTIFICATE,
53
+ ALERT_DESCRIPTION_UNSUPPORTED_EXTENSION,
54
+ ALERT_DESCRIPTION_USER_CANCELLED)
55
+ from _ssl import (SSL_ERROR_EOF, SSL_ERROR_INVALID_ERROR_CODE, SSL_ERROR_SSL,
56
+ SSL_ERROR_SYSCALL, SSL_ERROR_WANT_CONNECT, SSL_ERROR_WANT_READ,
57
+ SSL_ERROR_WANT_WRITE, SSL_ERROR_WANT_X509_LOOKUP, SSL_ERROR_ZERO_RETURN)
58
+ from _ssl import VERIFY_CRL_CHECK_CHAIN, VERIFY_CRL_CHECK_LEAF, VERIFY_DEFAULT, VERIFY_X509_STRICT
59
+ from _ssl import HAS_SNI, HAS_ECDH, HAS_NPN, HAS_ALPN
60
+ from _ssl import _OPENSSL_API_VERSION
61
+ from _ssl import PROTOCOL_SSLv23, PROTOCOL_TLSv1, PROTOCOL_TLSv1_1, PROTOCOL_TLSv1_2
62
+ ''')
63
+
64
+
65
+ register_module_extender(MANAGER, 'ssl', ssl_transform)
@@ -0,0 +1,473 @@
1
+
2
+ """Astroid hooks for the Python 2 standard library.
3
+
4
+ Currently help understanding of :
5
+
6
+ * hashlib.md5 and hashlib.sha1
7
+ """
8
+
9
+ import functools
10
+ import sys
11
+ from textwrap import dedent
12
+
13
+ from astroid import (
14
+ MANAGER, UseInferenceDefault, inference_tip, BoundMethod,
15
+ InferenceError, register_module_extender)
16
+ from astroid import exceptions
17
+ from astroid import nodes
18
+ from astroid.builder import AstroidBuilder
19
+ from astroid import util
20
+ from astroid import test_utils
21
+
22
+ PY3K = sys.version_info > (3, 0)
23
+ PY33 = sys.version_info >= (3, 3)
24
+ PY34 = sys.version_info >= (3, 4)
25
+
26
+ # general function
27
+
28
+ def infer_func_form(node, base_type, context=None, enum=False):
29
+ """Specific inference function for namedtuple or Python 3 enum. """
30
+ def infer_first(node):
31
+ if node is util.YES:
32
+ raise UseInferenceDefault
33
+ try:
34
+ value = next(node.infer(context=context))
35
+ if value is util.YES:
36
+ raise UseInferenceDefault()
37
+ else:
38
+ return value
39
+ except StopIteration:
40
+ raise InferenceError()
41
+
42
+ # node is a Call node, class name as first argument and generated class
43
+ # attributes as second argument
44
+ if len(node.args) != 2:
45
+ # something weird here, go back to class implementation
46
+ raise UseInferenceDefault()
47
+ # namedtuple or enums list of attributes can be a list of strings or a
48
+ # whitespace-separate string
49
+ try:
50
+ name = infer_first(node.args[0]).value
51
+ names = infer_first(node.args[1])
52
+ try:
53
+ attributes = names.value.replace(',', ' ').split()
54
+ except AttributeError:
55
+ if not enum:
56
+ attributes = [infer_first(const).value for const in names.elts]
57
+ else:
58
+ # Enums supports either iterator of (name, value) pairs
59
+ # or mappings.
60
+ # TODO: support only list, tuples and mappings.
61
+ if hasattr(names, 'items') and isinstance(names.items, list):
62
+ attributes = [infer_first(const[0]).value
63
+ for const in names.items
64
+ if isinstance(const[0], nodes.Const)]
65
+ elif hasattr(names, 'elts'):
66
+ # Enums can support either ["a", "b", "c"]
67
+ # or [("a", 1), ("b", 2), ...], but they can't
68
+ # be mixed.
69
+ if all(isinstance(const, nodes.Tuple)
70
+ for const in names.elts):
71
+ attributes = [infer_first(const.elts[0]).value
72
+ for const in names.elts
73
+ if isinstance(const, nodes.Tuple)]
74
+ else:
75
+ attributes = [infer_first(const).value
76
+ for const in names.elts]
77
+ else:
78
+ raise AttributeError
79
+ if not attributes:
80
+ raise AttributeError
81
+ except (AttributeError, exceptions.InferenceError):
82
+ raise UseInferenceDefault()
83
+
84
+ # If we can't iner the name of the class, don't crash, up to this point
85
+ # we know it is a namedtuple anyway.
86
+ name = name or 'Uninferable'
87
+ # we want to return a Class node instance with proper attributes set
88
+ class_node = nodes.ClassDef(name, 'docstring')
89
+ class_node.parent = node.parent
90
+ # set base class=tuple
91
+ class_node.bases.append(base_type)
92
+ # XXX add __init__(*attributes) method
93
+ for attr in attributes:
94
+ fake_node = nodes.EmptyNode()
95
+ fake_node.parent = class_node
96
+ fake_node.attrname = attr
97
+ class_node._instance_attrs[attr] = [fake_node]
98
+ return class_node, name, attributes
99
+
100
+
101
+ # module specific transformation functions #####################################
102
+
103
+ def hashlib_transform():
104
+ template = '''
105
+
106
+ class %(name)s(object):
107
+ def __init__(self, value=''): pass
108
+ def digest(self):
109
+ return %(digest)s
110
+ def copy(self):
111
+ return self
112
+ def update(self, value): pass
113
+ def hexdigest(self):
114
+ return ''
115
+ @property
116
+ def name(self):
117
+ return %(name)r
118
+ @property
119
+ def block_size(self):
120
+ return 1
121
+ @property
122
+ def digest_size(self):
123
+ return 1
124
+ '''
125
+ algorithms = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512')
126
+ classes = "".join(
127
+ template % {'name': hashfunc, 'digest': 'b""' if PY3K else '""'}
128
+ for hashfunc in algorithms)
129
+ return AstroidBuilder(MANAGER).string_build(classes)
130
+
131
+
132
+ def collections_transform():
133
+ return AstroidBuilder(MANAGER).string_build('''
134
+
135
+ class defaultdict(dict):
136
+ default_factory = None
137
+ def __missing__(self, key): pass
138
+
139
+ class deque(object):
140
+ maxlen = 0
141
+ def __init__(self, iterable=None, maxlen=None):
142
+ self.iterable = iterable
143
+ def append(self, x): pass
144
+ def appendleft(self, x): pass
145
+ def clear(self): pass
146
+ def count(self, x): return 0
147
+ def extend(self, iterable): pass
148
+ def extendleft(self, iterable): pass
149
+ def pop(self): pass
150
+ def popleft(self): pass
151
+ def remove(self, value): pass
152
+ def reverse(self): pass
153
+ def rotate(self, n): pass
154
+ def __iter__(self): return self
155
+ def __reversed__(self): return self.iterable[::-1]
156
+ def __getitem__(self, index): pass
157
+ def __setitem__(self, index, value): pass
158
+ def __delitem__(self, index): pass
159
+ ''')
160
+
161
+
162
+ def pkg_resources_transform():
163
+ return AstroidBuilder(MANAGER).string_build('''
164
+ def require(*requirements):
165
+ return pkg_resources.working_set.require(*requirements)
166
+
167
+ def run_script(requires, script_name):
168
+ return pkg_resources.working_set.run_script(requires, script_name)
169
+
170
+ def iter_entry_points(group, name=None):
171
+ return pkg_resources.working_set.iter_entry_points(group, name)
172
+
173
+ def resource_exists(package_or_requirement, resource_name):
174
+ return get_provider(package_or_requirement).has_resource(resource_name)
175
+
176
+ def resource_isdir(package_or_requirement, resource_name):
177
+ return get_provider(package_or_requirement).resource_isdir(
178
+ resource_name)
179
+
180
+ def resource_filename(package_or_requirement, resource_name):
181
+ return get_provider(package_or_requirement).get_resource_filename(
182
+ self, resource_name)
183
+
184
+ def resource_stream(package_or_requirement, resource_name):
185
+ return get_provider(package_or_requirement).get_resource_stream(
186
+ self, resource_name)
187
+
188
+ def resource_string(package_or_requirement, resource_name):
189
+ return get_provider(package_or_requirement).get_resource_string(
190
+ self, resource_name)
191
+
192
+ def resource_listdir(package_or_requirement, resource_name):
193
+ return get_provider(package_or_requirement).resource_listdir(
194
+ resource_name)
195
+
196
+ def extraction_error():
197
+ pass
198
+
199
+ def get_cache_path(archive_name, names=()):
200
+ extract_path = self.extraction_path or get_default_cache()
201
+ target_path = os.path.join(extract_path, archive_name+'-tmp', *names)
202
+ return target_path
203
+
204
+ def postprocess(tempname, filename):
205
+ pass
206
+
207
+ def set_extraction_path(path):
208
+ pass
209
+
210
+ def cleanup_resources(force=False):
211
+ pass
212
+
213
+ ''')
214
+
215
+
216
+ def subprocess_transform():
217
+ if PY3K:
218
+ communicate = (bytes('string', 'ascii'), bytes('string', 'ascii'))
219
+ communicate_signature = 'def communicate(self, input=None, timeout=None)'
220
+ init = """
221
+ def __init__(self, args, bufsize=0, executable=None,
222
+ stdin=None, stdout=None, stderr=None,
223
+ preexec_fn=None, close_fds=False, shell=False,
224
+ cwd=None, env=None, universal_newlines=False,
225
+ startupinfo=None, creationflags=0, restore_signals=True,
226
+ start_new_session=False, pass_fds=()):
227
+ pass
228
+ """
229
+ else:
230
+ communicate = ('string', 'string')
231
+ communicate_signature = 'def communicate(self, input=None)'
232
+ init = """
233
+ def __init__(self, args, bufsize=0, executable=None,
234
+ stdin=None, stdout=None, stderr=None,
235
+ preexec_fn=None, close_fds=False, shell=False,
236
+ cwd=None, env=None, universal_newlines=False,
237
+ startupinfo=None, creationflags=0):
238
+ pass
239
+ """
240
+ if PY33:
241
+ wait_signature = 'def wait(self, timeout=None)'
242
+ else:
243
+ wait_signature = 'def wait(self)'
244
+ if PY3K:
245
+ ctx_manager = '''
246
+ def __enter__(self): return self
247
+ def __exit__(self, *args): pass
248
+ '''
249
+ else:
250
+ ctx_manager = ''
251
+ code = dedent('''
252
+
253
+ class Popen(object):
254
+ returncode = pid = 0
255
+ stdin = stdout = stderr = file()
256
+
257
+ %(init)s
258
+
259
+ %(communicate_signature)s:
260
+ return %(communicate)r
261
+ %(wait_signature)s:
262
+ return self.returncode
263
+ def poll(self):
264
+ return self.returncode
265
+ def send_signal(self, signal):
266
+ pass
267
+ def terminate(self):
268
+ pass
269
+ def kill(self):
270
+ pass
271
+ %(ctx_manager)s
272
+ ''' % {'init': init,
273
+ 'communicate': communicate,
274
+ 'communicate_signature': communicate_signature,
275
+ 'wait_signature': wait_signature,
276
+ 'ctx_manager': ctx_manager})
277
+ return AstroidBuilder(MANAGER).string_build(code)
278
+
279
+
280
+ # namedtuple support ###########################################################
281
+
282
+ def _looks_like(node, name):
283
+ func = node.func
284
+ if isinstance(func, nodes.Attribute):
285
+ return func.attrname == name
286
+ if isinstance(func, nodes.Name):
287
+ return func.name == name
288
+ return False
289
+
290
+ _looks_like_namedtuple = functools.partial(_looks_like, name='namedtuple')
291
+ _looks_like_enum = functools.partial(_looks_like, name='Enum')
292
+
293
+
294
+ def infer_named_tuple(node, context=None):
295
+ """Specific inference function for namedtuple Call node"""
296
+ class_node, name, attributes = infer_func_form(node, nodes.Tuple._proxied,
297
+ context=context)
298
+ fake = AstroidBuilder(MANAGER).string_build('''
299
+ class %(name)s(tuple):
300
+ _fields = %(fields)r
301
+ def _asdict(self):
302
+ return self.__dict__
303
+ @classmethod
304
+ def _make(cls, iterable, new=tuple.__new__, len=len):
305
+ return new(cls, iterable)
306
+ def _replace(self, **kwds):
307
+ return self
308
+ ''' % {'name': name, 'fields': attributes})
309
+ class_node._locals['_asdict'] = fake.body[0]._locals['_asdict']
310
+ class_node._locals['_make'] = fake.body[0]._locals['_make']
311
+ class_node._locals['_replace'] = fake.body[0]._locals['_replace']
312
+ class_node._locals['_fields'] = fake.body[0]._locals['_fields']
313
+ # we use UseInferenceDefault, we can't be a generator so return an iterator
314
+ return iter([class_node])
315
+
316
+
317
+ def infer_enum(node, context=None):
318
+ """ Specific inference function for enum Call node. """
319
+ enum_meta = test_utils.extract_node('''
320
+ class EnumMeta(object):
321
+ 'docstring'
322
+ def __call__(self, node):
323
+ class EnumAttribute(object):
324
+ name = ''
325
+ value = 0
326
+ return EnumAttribute()
327
+ ''')
328
+ class_node = infer_func_form(node, enum_meta,
329
+ context=context, enum=True)[0]
330
+ return iter([class_node.instantiate_class()])
331
+
332
+
333
+ def infer_enum_class(node):
334
+ """ Specific inference for enums. """
335
+ names = set(('Enum', 'IntEnum', 'enum.Enum', 'enum.IntEnum'))
336
+ for basename in node.basenames:
337
+ # TODO: doesn't handle subclasses yet. This implementation
338
+ # is a hack to support enums.
339
+ if basename not in names:
340
+ continue
341
+ if node.root().name == 'enum':
342
+ # Skip if the class is directly from enum module.
343
+ break
344
+ for local, values in node._locals.items():
345
+ if any(not isinstance(value, nodes.AssignName)
346
+ for value in values):
347
+ continue
348
+
349
+ stmt = values[0].statement()
350
+ if isinstance(stmt.targets[0], nodes.Tuple):
351
+ targets = stmt.targets[0].itered()
352
+ else:
353
+ targets = stmt.targets
354
+
355
+ new_targets = []
356
+ for target in targets:
357
+ # Replace all the assignments with our mocked class.
358
+ classdef = dedent('''
359
+ class %(name)s(%(types)s):
360
+ @property
361
+ def value(self):
362
+ # Not the best return.
363
+ return None
364
+ @property
365
+ def name(self):
366
+ return %(name)r
367
+ ''' % {'name': target.name, 'types': ', '.join(node.basenames)})
368
+ fake = AstroidBuilder(MANAGER).string_build(classdef)[target.name]
369
+ fake.parent = target.parent
370
+ for method in node.mymethods():
371
+ fake._locals[method.name] = [method]
372
+ new_targets.append(fake.instantiate_class())
373
+ node._locals[local] = new_targets
374
+ break
375
+ return node
376
+
377
+ def multiprocessing_transform():
378
+ module = AstroidBuilder(MANAGER).string_build(dedent('''
379
+ from multiprocessing.managers import SyncManager
380
+ def Manager():
381
+ return SyncManager()
382
+ '''))
383
+ if not PY34:
384
+ return module
385
+
386
+ # On Python 3.4, multiprocessing uses a getattr lookup inside contexts,
387
+ # in order to get the attributes they need. Since it's extremely
388
+ # dynamic, we use this approach to fake it.
389
+ node = AstroidBuilder(MANAGER).string_build(dedent('''
390
+ from multiprocessing.context import DefaultContext, BaseContext
391
+ default = DefaultContext()
392
+ base = BaseContext()
393
+ '''))
394
+ try:
395
+ context = next(node['default'].infer())
396
+ base = next(node['base'].infer())
397
+ except InferenceError:
398
+ return module
399
+
400
+ for node in (context, base):
401
+ for key, value in node._locals.items():
402
+ if key.startswith("_"):
403
+ continue
404
+
405
+ value = value[0]
406
+ if isinstance(value, nodes.FunctionDef):
407
+ # We need to rebound this, since otherwise
408
+ # it will have an extra argument (self).
409
+ value = BoundMethod(value, node)
410
+ module[key] = value
411
+ return module
412
+
413
+ def multiprocessing_managers_transform():
414
+ return AstroidBuilder(MANAGER).string_build(dedent('''
415
+ import array
416
+ import threading
417
+ import multiprocessing.pool as pool
418
+
419
+ import six
420
+
421
+ class Namespace(object):
422
+ pass
423
+
424
+ class Value(object):
425
+ def __init__(self, typecode, value, lock=True):
426
+ self._typecode = typecode
427
+ self._value = value
428
+ def get(self):
429
+ return self._value
430
+ def set(self, value):
431
+ self._value = value
432
+ def __repr__(self):
433
+ return '%s(%r, %r)'%(type(self).__name__, self._typecode, self._value)
434
+ value = property(get, set)
435
+
436
+ def Array(typecode, sequence, lock=True):
437
+ return array.array(typecode, sequence)
438
+
439
+ class SyncManager(object):
440
+ Queue = JoinableQueue = six.moves.queue.Queue
441
+ Event = threading.Event
442
+ RLock = threading.RLock
443
+ BoundedSemaphore = threading.BoundedSemaphore
444
+ Condition = threading.Condition
445
+ Barrier = threading.Barrier
446
+ Pool = pool.Pool
447
+ list = list
448
+ dict = dict
449
+ Value = Value
450
+ Array = Array
451
+ Namespace = Namespace
452
+ __enter__ = lambda self: self
453
+ __exit__ = lambda *args: args
454
+
455
+ def start(self, initializer=None, initargs=None):
456
+ pass
457
+ def shutdown(self):
458
+ pass
459
+ '''))
460
+
461
+
462
+ MANAGER.register_transform(nodes.Call, inference_tip(infer_named_tuple),
463
+ _looks_like_namedtuple)
464
+ MANAGER.register_transform(nodes.Call, inference_tip(infer_enum),
465
+ _looks_like_enum)
466
+ MANAGER.register_transform(nodes.ClassDef, infer_enum_class)
467
+ register_module_extender(MANAGER, 'hashlib', hashlib_transform)
468
+ register_module_extender(MANAGER, 'collections', collections_transform)
469
+ register_module_extender(MANAGER, 'pkg_resources', pkg_resources_transform)
470
+ register_module_extender(MANAGER, 'subprocess', subprocess_transform)
471
+ register_module_extender(MANAGER, 'multiprocessing.managers',
472
+ multiprocessing_managers_transform)
473
+ register_module_extender(MANAGER, 'multiprocessing', multiprocessing_transform)