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
@@ -30,6 +30,26 @@ class AstroidBuildingException(AstroidError):
30
30
  class ResolveError(AstroidError):
31
31
  """base class of astroid resolution/inference error"""
32
32
 
33
+ class MroError(ResolveError):
34
+ """Error raised when there is a problem with method resolution of a class."""
35
+
36
+
37
+ class DuplicateBasesError(MroError):
38
+ """Error raised when there are duplicate bases in the same class bases."""
39
+
40
+
41
+ class InconsistentMroError(MroError):
42
+ """Error raised when a class's MRO is inconsistent."""
43
+
44
+
45
+ class SuperError(ResolveError):
46
+ """Error raised when there is a problem with a super call."""
47
+
48
+
49
+ class SuperArgumentTypeError(SuperError):
50
+ """Error raised when the super arguments are invalid."""
51
+
52
+
33
53
  class NotFoundError(ResolveError):
34
54
  """raised when we are unable to resolve a name"""
35
55
 
@@ -18,125 +18,32 @@
18
18
  """this module contains a set of functions to handle inference on astroid trees
19
19
  """
20
20
 
21
- __doctype__ = "restructuredtext en"
22
-
23
- from itertools import chain
21
+ from __future__ import print_function
24
22
 
23
+ from astroid import bases
24
+ from astroid import context as contextmod
25
+ from astroid import exceptions
26
+ from astroid import manager
25
27
  from astroid import nodes
28
+ from astroid import protocols
29
+ from astroid import util
26
30
 
27
- from astroid.manager import AstroidManager
28
- from astroid.exceptions import (AstroidError, InferenceError, NoDefault,
29
- NotFoundError, UnresolvableName)
30
- from astroid.bases import (YES, Instance, InferenceContext,
31
- _infer_stmts, copy_context, path_wrapper,
32
- raise_if_nothing_infered)
33
- from astroid.protocols import (
34
- _arguments_infer_argname,
35
- BIN_OP_METHOD, UNARY_OP_METHOD)
36
-
37
- MANAGER = AstroidManager()
38
-
39
-
40
- class CallContext(object):
41
- """when inferring a function call, this class is used to remember values
42
- given as argument
43
- """
44
- def __init__(self, args, starargs, dstarargs):
45
- self.args = []
46
- self.nargs = {}
47
- for arg in args:
48
- if isinstance(arg, nodes.Keyword):
49
- self.nargs[arg.arg] = arg.value
50
- else:
51
- self.args.append(arg)
52
- self.starargs = starargs
53
- self.dstarargs = dstarargs
54
31
 
55
- def infer_argument(self, funcnode, name, context):
56
- """infer a function argument value according to the call context"""
57
- # 1. search in named keywords
58
- try:
59
- return self.nargs[name].infer(context)
60
- except KeyError:
61
- # Function.args.args can be None in astroid (means that we don't have
62
- # information on argnames)
63
- argindex = funcnode.args.find_argname(name)[0]
64
- if argindex is not None:
65
- # 2. first argument of instance/class method
66
- if argindex == 0 and funcnode.type in ('method', 'classmethod'):
67
- if context.boundnode is not None:
68
- boundnode = context.boundnode
69
- else:
70
- # XXX can do better ?
71
- boundnode = funcnode.parent.frame()
72
- if funcnode.type == 'method':
73
- if not isinstance(boundnode, Instance):
74
- boundnode = Instance(boundnode)
75
- return iter((boundnode,))
76
- if funcnode.type == 'classmethod':
77
- return iter((boundnode,))
78
- # if we have a method, extract one position
79
- # from the index, so we'll take in account
80
- # the extra parameter represented by `self` or `cls`
81
- if funcnode.type in ('method', 'classmethod'):
82
- argindex -= 1
83
- # 2. search arg index
84
- try:
85
- return self.args[argindex].infer(context)
86
- except IndexError:
87
- pass
88
- # 3. search in *args (.starargs)
89
- if self.starargs is not None:
90
- its = []
91
- for infered in self.starargs.infer(context):
92
- if infered is YES:
93
- its.append((YES,))
94
- continue
95
- try:
96
- its.append(infered.getitem(argindex, context).infer(context))
97
- except (InferenceError, AttributeError):
98
- its.append((YES,))
99
- except (IndexError, TypeError):
100
- continue
101
- if its:
102
- return chain(*its)
103
- # 4. XXX search in **kwargs (.dstarargs)
104
- if self.dstarargs is not None:
105
- its = []
106
- for infered in self.dstarargs.infer(context):
107
- if infered is YES:
108
- its.append((YES,))
109
- continue
110
- try:
111
- its.append(infered.getitem(name, context).infer(context))
112
- except (InferenceError, AttributeError):
113
- its.append((YES,))
114
- except (IndexError, TypeError):
115
- continue
116
- if its:
117
- return chain(*its)
118
- # 5. */** argument, (Tuple or Dict)
119
- if name == funcnode.args.vararg:
120
- return iter((nodes.const_factory(())))
121
- if name == funcnode.args.kwarg:
122
- return iter((nodes.const_factory({})))
123
- # 6. return default value if any
124
- try:
125
- return funcnode.args.default_value(name).infer(context)
126
- except NoDefault:
127
- raise InferenceError(name)
32
+ MANAGER = manager.AstroidManager()
128
33
 
129
34
 
130
35
  # .infer method ###############################################################
131
36
 
132
37
 
133
38
  def infer_end(self, context=None):
134
- """inference's end for node such as Module, Class, Function, Const...
39
+ """inference's end for node such as Module, ClassDef, FunctionDef,
40
+ Const...
41
+
135
42
  """
136
43
  yield self
137
44
  nodes.Module._infer = infer_end
138
- nodes.Class._infer = infer_end
139
- nodes.Function._infer = infer_end
45
+ nodes.ClassDef._infer = infer_end
46
+ nodes.FunctionDef._infer = infer_end
140
47
  nodes.Lambda._infer = infer_end
141
48
  nodes.Const._infer = infer_end
142
49
  nodes.List._infer = infer_end
@@ -157,7 +64,7 @@ def _higher_function_scope(node):
157
64
  which encloses the given node.
158
65
  """
159
66
  current = node
160
- while current.parent and not isinstance(current.parent, nodes.Function):
67
+ while current.parent and not isinstance(current.parent, nodes.FunctionDef):
161
68
  current = current.parent
162
69
  if current and current.parent:
163
70
  return current.parent
@@ -174,72 +81,80 @@ def infer_name(self, context=None):
174
81
  _, stmts = parent_function.lookup(self.name)
175
82
 
176
83
  if not stmts:
177
- raise UnresolvableName(self.name)
84
+ raise exceptions.UnresolvableName(self.name)
178
85
  context = context.clone()
179
86
  context.lookupname = self.name
180
- return _infer_stmts(stmts, context, frame)
181
- nodes.Name._infer = path_wrapper(infer_name)
182
- nodes.AssName.infer_lhs = infer_name # won't work with a path wrapper
87
+ return bases._infer_stmts(stmts, context, frame)
88
+ nodes.Name._infer = bases.path_wrapper(infer_name)
89
+ nodes.AssignName.infer_lhs = infer_name # won't work with a path wrapper
183
90
 
184
91
 
185
- def infer_callfunc(self, context=None):
186
- """infer a CallFunc node by trying to guess what the function returns"""
92
+ @bases.path_wrapper
93
+ @bases.raise_if_nothing_inferred
94
+ def infer_call(self, context=None):
95
+ """infer a Call node by trying to guess what the function returns"""
187
96
  callcontext = context.clone()
188
- callcontext.callcontext = CallContext(self.args, self.starargs, self.kwargs)
97
+ callcontext.callcontext = contextmod.CallContext(args=self.args,
98
+ keywords=self.keywords)
189
99
  callcontext.boundnode = None
190
100
  for callee in self.func.infer(context):
191
- if callee is YES:
101
+ if callee is util.YES:
192
102
  yield callee
193
103
  continue
194
104
  try:
195
105
  if hasattr(callee, 'infer_call_result'):
196
- for infered in callee.infer_call_result(self, callcontext):
197
- yield infered
198
- except InferenceError:
106
+ for inferred in callee.infer_call_result(self, callcontext):
107
+ yield inferred
108
+ except exceptions.InferenceError:
199
109
  ## XXX log error ?
200
110
  continue
201
- nodes.CallFunc._infer = path_wrapper(raise_if_nothing_infered(infer_callfunc))
111
+ nodes.Call._infer = infer_call
202
112
 
203
113
 
114
+ @bases.path_wrapper
204
115
  def infer_import(self, context=None, asname=True):
205
116
  """infer an Import node: return the imported module/object"""
206
117
  name = context.lookupname
207
118
  if name is None:
208
- raise InferenceError()
119
+ raise exceptions.InferenceError()
209
120
  if asname:
210
121
  yield self.do_import_module(self.real_name(name))
211
122
  else:
212
123
  yield self.do_import_module(name)
213
- nodes.Import._infer = path_wrapper(infer_import)
124
+ nodes.Import._infer = infer_import
125
+
214
126
 
215
127
  def infer_name_module(self, name):
216
- context = InferenceContext()
128
+ context = contextmod.InferenceContext()
217
129
  context.lookupname = name
218
130
  return self.infer(context, asname=False)
219
131
  nodes.Import.infer_name_module = infer_name_module
220
132
 
221
133
 
222
- def infer_from(self, context=None, asname=True):
223
- """infer a From nodes: return the imported module/object"""
134
+ @bases.path_wrapper
135
+ def infer_import_from(self, context=None, asname=True):
136
+ """infer a ImportFrom node: return the imported module/object"""
224
137
  name = context.lookupname
225
138
  if name is None:
226
- raise InferenceError()
139
+ raise exceptions.InferenceError()
227
140
  if asname:
228
141
  name = self.real_name(name)
229
142
  module = self.do_import_module()
230
143
  try:
231
- context = copy_context(context)
144
+ context = contextmod.copy_context(context)
232
145
  context.lookupname = name
233
- return _infer_stmts(module.getattr(name, ignore_locals=module is self.root()), context)
234
- except NotFoundError:
235
- raise InferenceError(name)
236
- nodes.From._infer = path_wrapper(infer_from)
146
+ stmts = module.getattr(name, ignore_locals=module is self.root())
147
+ return bases._infer_stmts(stmts, context)
148
+ except exceptions.NotFoundError:
149
+ raise exceptions.InferenceError(name)
150
+ nodes.ImportFrom._infer = infer_import_from
237
151
 
238
152
 
239
- def infer_getattr(self, context=None):
240
- """infer a Getattr node by using getattr on the associated object"""
153
+ @bases.raise_if_nothing_inferred
154
+ def infer_attribute(self, context=None):
155
+ """infer an Attribute node by using getattr on the associated object"""
241
156
  for owner in self.expr.infer(context):
242
- if owner is YES:
157
+ if owner is util.YES:
243
158
  yield owner
244
159
  continue
245
160
  try:
@@ -247,58 +162,69 @@ def infer_getattr(self, context=None):
247
162
  for obj in owner.igetattr(self.attrname, context):
248
163
  yield obj
249
164
  context.boundnode = None
250
- except (NotFoundError, InferenceError):
165
+ except (exceptions.NotFoundError, exceptions.InferenceError):
251
166
  context.boundnode = None
252
167
  except AttributeError:
253
168
  # XXX method / function
254
169
  context.boundnode = None
255
- nodes.Getattr._infer = path_wrapper(raise_if_nothing_infered(infer_getattr))
256
- nodes.AssAttr.infer_lhs = raise_if_nothing_infered(infer_getattr) # # won't work with a path wrapper
170
+ nodes.Attribute._infer = bases.path_wrapper(infer_attribute)
171
+ nodes.AssignAttr.infer_lhs = infer_attribute # # won't work with a path wrapper
257
172
 
258
173
 
174
+ @bases.path_wrapper
259
175
  def infer_global(self, context=None):
260
176
  if context.lookupname is None:
261
- raise InferenceError()
177
+ raise exceptions.InferenceError()
262
178
  try:
263
- return _infer_stmts(self.root().getattr(context.lookupname), context)
264
- except NotFoundError:
265
- raise InferenceError()
266
- nodes.Global._infer = path_wrapper(infer_global)
179
+ return bases._infer_stmts(self.root().getattr(context.lookupname),
180
+ context)
181
+ except exceptions.NotFoundError:
182
+ raise exceptions.InferenceError()
183
+ nodes.Global._infer = infer_global
267
184
 
268
185
 
186
+ @bases.raise_if_nothing_inferred
269
187
  def infer_subscript(self, context=None):
270
- """infer simple subscription such as [1,2,3][0] or (1,2,3)[-1]"""
188
+ """Inference for subscripts
189
+
190
+ We're understanding if the index is a Const
191
+ or a slice, passing the result of inference
192
+ to the value's `getitem` method, which should
193
+ handle each supported index type accordingly.
194
+ """
195
+
271
196
  value = next(self.value.infer(context))
272
- if value is YES:
273
- yield YES
197
+ if value is util.YES:
198
+ yield util.YES
274
199
  return
275
200
 
276
201
  index = next(self.slice.infer(context))
277
- if index is YES:
278
- yield YES
202
+ if index is util.YES:
203
+ yield util.YES
279
204
  return
280
205
 
281
206
  if isinstance(index, nodes.Const):
282
207
  try:
283
208
  assigned = value.getitem(index.value, context)
284
209
  except AttributeError:
285
- raise InferenceError()
210
+ raise exceptions.InferenceError()
286
211
  except (IndexError, TypeError):
287
- yield YES
212
+ yield util.YES
288
213
  return
289
214
 
290
215
  # Prevent inferring if the infered subscript
291
216
  # is the same as the original subscripted object.
292
- if self is assigned:
293
- yield YES
217
+ if self is assigned or assigned is util.YES:
218
+ yield util.YES
294
219
  return
295
220
  for infered in assigned.infer(context):
296
221
  yield infered
297
222
  else:
298
- raise InferenceError()
299
- nodes.Subscript._infer = path_wrapper(infer_subscript)
300
- nodes.Subscript.infer_lhs = raise_if_nothing_infered(infer_subscript)
223
+ raise exceptions.InferenceError()
224
+ nodes.Subscript._infer = bases.path_wrapper(infer_subscript)
225
+ nodes.Subscript.infer_lhs = infer_subscript
301
226
 
227
+ @bases.raise_if_nothing_inferred
302
228
  def infer_unaryop(self, context=None):
303
229
  for operand in self.operand.infer(context):
304
230
  try:
@@ -306,9 +232,9 @@ def infer_unaryop(self, context=None):
306
232
  except TypeError:
307
233
  continue
308
234
  except AttributeError:
309
- meth = UNARY_OP_METHOD[self.op]
235
+ meth = protocols.UNARY_OP_METHOD[self.op]
310
236
  if meth is None:
311
- yield YES
237
+ yield util.YES
312
238
  else:
313
239
  try:
314
240
  # XXX just suppose if the type implement meth, returned type
@@ -318,88 +244,116 @@ def infer_unaryop(self, context=None):
318
244
  except GeneratorExit:
319
245
  raise
320
246
  except:
321
- yield YES
322
- nodes.UnaryOp._infer = path_wrapper(infer_unaryop)
247
+ yield util.YES
248
+ nodes.UnaryOp._infer = bases.path_wrapper(infer_unaryop)
323
249
 
324
- def _infer_binop(operator, operand1, operand2, context, failures=None):
325
- if operand1 is YES:
250
+ def _infer_binop(binop, operand1, operand2, context, failures=None):
251
+ if operand1 is util.YES:
326
252
  yield operand1
327
253
  return
328
254
  try:
329
- for valnode in operand1.infer_binary_op(operator, operand2, context):
255
+ for valnode in operand1.infer_binary_op(binop, operand2, context):
330
256
  yield valnode
331
257
  except AttributeError:
332
258
  try:
333
259
  # XXX just suppose if the type implement meth, returned type
334
260
  # will be the same
335
- operand1.getattr(BIN_OP_METHOD[operator])
261
+ operand1.getattr(protocols.BIN_OP_METHOD[operator])
336
262
  yield operand1
337
263
  except:
338
264
  if failures is None:
339
- yield YES
265
+ yield util.YES
340
266
  else:
341
267
  failures.append(operand1)
342
268
 
269
+ @bases.yes_if_nothing_inferred
343
270
  def infer_binop(self, context=None):
344
271
  failures = []
345
272
  for lhs in self.left.infer(context):
346
- for val in _infer_binop(self.op, lhs, self.right, context, failures):
273
+ for val in _infer_binop(self, lhs, self.right, context, failures):
347
274
  yield val
348
275
  for lhs in failures:
349
276
  for rhs in self.right.infer(context):
350
- for val in _infer_binop(self.op, rhs, lhs, context):
277
+ for val in _infer_binop(self, rhs, lhs, context):
351
278
  yield val
352
- nodes.BinOp._infer = path_wrapper(infer_binop)
279
+ nodes.BinOp._infer = bases.path_wrapper(infer_binop)
353
280
 
354
281
 
355
282
  def infer_arguments(self, context=None):
356
283
  name = context.lookupname
357
284
  if name is None:
358
- raise InferenceError()
359
- return _arguments_infer_argname(self, name, context)
285
+ raise exceptions.InferenceError()
286
+ return protocols._arguments_infer_argname(self, name, context)
360
287
  nodes.Arguments._infer = infer_arguments
361
288
 
362
289
 
363
- def infer_ass(self, context=None):
364
- """infer a AssName/AssAttr: need to inspect the RHS part of the
290
+ @bases.path_wrapper
291
+ def infer_assign(self, context=None):
292
+ """infer a AssignName/AssignAttr: need to inspect the RHS part of the
365
293
  assign node
366
294
  """
367
295
  stmt = self.statement()
368
296
  if isinstance(stmt, nodes.AugAssign):
369
297
  return stmt.infer(context)
298
+
370
299
  stmts = list(self.assigned_stmts(context=context))
371
- return _infer_stmts(stmts, context)
372
- nodes.AssName._infer = path_wrapper(infer_ass)
373
- nodes.AssAttr._infer = path_wrapper(infer_ass)
300
+ return bases._infer_stmts(stmts, context)
301
+ nodes.AssignName._infer = infer_assign
302
+ nodes.AssignAttr._infer = infer_assign
374
303
 
375
304
  def infer_augassign(self, context=None):
376
305
  failures = []
377
306
  for lhs in self.target.infer_lhs(context):
378
- for val in _infer_binop(self.op, lhs, self.value, context, failures):
307
+ for val in _infer_binop(self, lhs, self.value, context, failures):
379
308
  yield val
380
309
  for lhs in failures:
381
310
  for rhs in self.value.infer(context):
382
- for val in _infer_binop(self.op, rhs, lhs, context):
311
+ for val in _infer_binop(self, rhs, lhs, context):
383
312
  yield val
384
- nodes.AugAssign._infer = path_wrapper(infer_augassign)
313
+ nodes.AugAssign._infer = bases.path_wrapper(infer_augassign)
385
314
 
386
315
 
387
316
  # no infer method on DelName and DelAttr (expected InferenceError)
388
317
 
389
-
318
+ @bases.path_wrapper
390
319
  def infer_empty_node(self, context=None):
391
320
  if not self.has_underlying_object():
392
- yield YES
321
+ yield util.YES
393
322
  else:
394
323
  try:
395
- for infered in MANAGER.infer_ast_from_something(self.object,
396
- context=context):
397
- yield infered
398
- except AstroidError:
399
- yield YES
400
- nodes.EmptyNode._infer = path_wrapper(infer_empty_node)
324
+ for inferred in MANAGER.infer_ast_from_something(self.object,
325
+ context=context):
326
+ yield inferred
327
+ except exceptions.AstroidError:
328
+ yield util.YES
329
+ nodes.EmptyNode._infer = infer_empty_node
401
330
 
402
331
 
403
332
  def infer_index(self, context=None):
404
333
  return self.value.infer(context)
405
334
  nodes.Index._infer = infer_index
335
+
336
+ # TODO: move directly into bases.Instance when the dependency hell
337
+ # will be solved.
338
+ def instance_getitem(self, index, context=None):
339
+ # Rewrap index to Const for this case
340
+ index = nodes.Const(index)
341
+ if context:
342
+ new_context = context.clone()
343
+ else:
344
+ context = new_context = contextmod.InferenceContext()
345
+
346
+ # Create a new callcontext for providing index as an argument.
347
+ new_context.callcontext = contextmod.CallContext(args=[index])
348
+ new_context.boundnode = self
349
+
350
+ method = next(self.igetattr('__getitem__', context=context))
351
+ if not isinstance(method, bases.BoundMethod):
352
+ raise exceptions.InferenceError
353
+
354
+ try:
355
+ return next(method.infer_call_result(self, new_context))
356
+ except StopIteration:
357
+ raise exceptions.InferenceError
358
+
359
+ bases.Instance.getitem = instance_getitem