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
@@ -24,40 +24,54 @@ on all nodes :
24
24
  .next_sibling(), returning next sibling statement node
25
25
  .statement(), returning the first parent node marked as statement node
26
26
  .frame(), returning the first node defining a new local scope (i.e.
27
- Module, Function or Class)
27
+ Module, FunctionDef or ClassDef)
28
28
  .set_local(name, node), define an identifier <name> on the first parent frame,
29
29
  with the node defining it. This is used by the astroid builder and should not
30
30
  be used from out there.
31
31
 
32
- on From and Import :
32
+ on ImportFrom and Import :
33
33
  .real_name(name),
34
34
 
35
35
 
36
36
  """
37
- # pylint: disable=unused-import
37
+ # pylint: disable=unused-import,redefined-builtin
38
+
39
+ from astroid.node_classes import (
40
+ Arguments, AssignAttr, Assert, Assign,
41
+ AssignName, AugAssign, Repr, BinOp, BoolOp, Break, Call, Compare,
42
+ Comprehension, Const, Continue, Decorators, DelAttr, DelName, Delete,
43
+ Dict, Expr, Ellipsis, EmptyNode, ExceptHandler, Exec, ExtSlice, For,
44
+ ImportFrom, Attribute, Global, If, IfExp, Import, Index, Keyword,
45
+ List, Name, Nonlocal, Pass, Print, Raise, Return, Set, Slice, Starred, Subscript,
46
+ TryExcept, TryFinally, Tuple, UnaryOp, While, With, Yield, YieldFrom,
47
+ const_factory,
48
+ AsyncFor, Await, AsyncWith,
49
+ # Backwards-compatibility aliases
50
+ Backquote, Discard, AssName, AssAttr, Getattr, CallFunc, From,
51
+ # Node not present in the builtin ast module.
52
+ DictUnpack,
53
+ )
54
+ from astroid.scoped_nodes import (
55
+ Module, GeneratorExp, Lambda, DictComp,
56
+ ListComp, SetComp, FunctionDef, ClassDef,
57
+ AsyncFunctionDef,
58
+ # Backwards-compatibility aliases
59
+ Class, Function, GenExpr,
60
+ )
38
61
 
39
- __docformat__ = "restructuredtext en"
40
62
 
41
- from astroid.node_classes import Arguments, AssAttr, Assert, Assign, \
42
- AssName, AugAssign, Backquote, BinOp, BoolOp, Break, CallFunc, Compare, \
43
- Comprehension, Const, Continue, Decorators, DelAttr, DelName, Delete, \
44
- Dict, Discard, Ellipsis, EmptyNode, ExceptHandler, Exec, ExtSlice, For, \
45
- From, Getattr, Global, If, IfExp, Import, Index, Keyword, \
46
- List, Name, Nonlocal, Pass, Print, Raise, Return, Set, Slice, Starred, Subscript, \
47
- TryExcept, TryFinally, Tuple, UnaryOp, While, With, Yield, YieldFrom, \
48
- const_factory
49
- from astroid.scoped_nodes import Module, GenExpr, Lambda, DictComp, \
50
- ListComp, SetComp, Function, Class
51
63
 
52
64
  ALL_NODE_CLASSES = (
53
- Arguments, AssAttr, Assert, Assign, AssName, AugAssign,
54
- Backquote, BinOp, BoolOp, Break,
55
- CallFunc, Class, Compare, Comprehension, Const, Continue,
65
+ AsyncFunctionDef, AsyncFor, AsyncWith, Await,
66
+
67
+ Arguments, AssignAttr, Assert, Assign, AssignName, AugAssign,
68
+ Repr, BinOp, BoolOp, Break,
69
+ Call, ClassDef, Compare, Comprehension, Const, Continue,
56
70
  Decorators, DelAttr, DelName, Delete,
57
- Dict, DictComp, Discard,
71
+ Dict, DictComp, DictUnpack, Expr,
58
72
  Ellipsis, EmptyNode, ExceptHandler, Exec, ExtSlice,
59
- For, From, Function,
60
- Getattr, GenExpr, Global,
73
+ For, ImportFrom, FunctionDef,
74
+ Attribute, GeneratorExp, Global,
61
75
  If, IfExp, Import, Index,
62
76
  Keyword,
63
77
  Lambda, List, ListComp,
@@ -69,6 +83,5 @@ ALL_NODE_CLASSES = (
69
83
  TryExcept, TryFinally, Tuple,
70
84
  UnaryOp,
71
85
  While, With,
72
- Yield, YieldFrom
86
+ Yield, YieldFrom,
73
87
  )
74
-
@@ -0,0 +1,186 @@
1
+ # copyright 2003-2015 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2
+ # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3
+ #
4
+ # This file is part of astroid.
5
+ #
6
+ # astroid is free software: you can redistribute it and/or modify it
7
+ # under the terms of the GNU Lesser General Public License as published by the
8
+ # Free Software Foundation, either version 2.1 of the License, or (at your
9
+ # option) any later version.
10
+ #
11
+ # astroid is distributed in the hope that it will be useful, but
12
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
14
+ # for more details.
15
+ #
16
+ # You should have received a copy of the GNU Lesser General Public License along
17
+ # with astroid. If not, see <http://www.gnu.org/licenses/>.
18
+
19
+ """
20
+ Inference objects are a way to represent composite AST nodes,
21
+ which are used only as inference results, so they can't be found in the
22
+ code tree. For instance, inferring the following frozenset use, leads to an
23
+ inferred FrozenSet:
24
+
25
+ CallFunc(func=Name('frozenset'), args=Tuple(...))
26
+
27
+ """
28
+
29
+ import six
30
+
31
+ from astroid import MANAGER
32
+ from astroid.bases import (
33
+ BUILTINS, NodeNG, Instance, _infer_stmts,
34
+ BoundMethod, _is_property
35
+ )
36
+ from astroid.decorators import cachedproperty
37
+ from astroid.exceptions import (
38
+ SuperError, SuperArgumentTypeError,
39
+ NotFoundError, MroError
40
+ )
41
+ from astroid.node_classes import const_factory
42
+ from astroid.scoped_nodes import ClassDef, FunctionDef
43
+ from astroid.mixins import ParentAssignTypeMixin
44
+
45
+
46
+ class FrozenSet(NodeNG, Instance, ParentAssignTypeMixin):
47
+ """class representing a FrozenSet composite node"""
48
+
49
+ def __init__(self, elts=None):
50
+ if elts is None:
51
+ self.elts = []
52
+ else:
53
+ self.elts = [const_factory(e) for e in elts]
54
+
55
+ def pytype(self):
56
+ return '%s.frozenset' % BUILTINS
57
+
58
+ def itered(self):
59
+ return self.elts
60
+
61
+ def _infer(self, context=None):
62
+ yield self
63
+
64
+ @cachedproperty
65
+ def _proxied(self):
66
+ builtins = MANAGER.astroid_cache[BUILTINS]
67
+ return builtins.getattr('frozenset')[0]
68
+
69
+
70
+ class Super(NodeNG):
71
+ """Proxy class over a super call.
72
+
73
+ This class offers almost the same behaviour as Python's super,
74
+ which is MRO lookups for retrieving attributes from the parents.
75
+
76
+ The *mro_pointer* is the place in the MRO from where we should
77
+ start looking, not counting it. *mro_type* is the object which
78
+ provides the MRO, it can be both a type or an instance.
79
+ *self_class* is the class where the super call is, while
80
+ *scope* is the function where the super call is.
81
+ """
82
+
83
+ def __init__(self, mro_pointer, mro_type, self_class, scope):
84
+ self.type = mro_type
85
+ self.mro_pointer = mro_pointer
86
+ self._class_based = False
87
+ self._self_class = self_class
88
+ self._scope = scope
89
+ self._model = {
90
+ '__thisclass__': self.mro_pointer,
91
+ '__self_class__': self._self_class,
92
+ '__self__': self.type,
93
+ '__class__': self._proxied,
94
+ }
95
+
96
+ def _infer(self, context=None):
97
+ yield self
98
+
99
+ def super_mro(self):
100
+ """Get the MRO which will be used to lookup attributes in this super."""
101
+ if not isinstance(self.mro_pointer, ClassDef):
102
+ raise SuperArgumentTypeError("The first super argument must be type.")
103
+
104
+ if isinstance(self.type, ClassDef):
105
+ # `super(type, type)`, most likely in a class method.
106
+ self._class_based = True
107
+ mro_type = self.type
108
+ else:
109
+ mro_type = getattr(self.type, '_proxied', None)
110
+ if not isinstance(mro_type, (Instance, ClassDef)):
111
+ raise SuperArgumentTypeError("super(type, obj): obj must be an "
112
+ "instance or subtype of type")
113
+
114
+ if not mro_type.newstyle:
115
+ raise SuperError("Unable to call super on old-style classes.")
116
+
117
+ mro = mro_type.mro()
118
+ if self.mro_pointer not in mro:
119
+ raise SuperArgumentTypeError("super(type, obj): obj must be an "
120
+ "instance or subtype of type")
121
+
122
+ index = mro.index(self.mro_pointer)
123
+ return mro[index + 1:]
124
+
125
+ @cachedproperty
126
+ def _proxied(self):
127
+ builtins = MANAGER.astroid_cache[BUILTINS]
128
+ return builtins.getattr('super')[0]
129
+
130
+ def pytype(self):
131
+ return '%s.super' % BUILTINS
132
+
133
+ def display_type(self):
134
+ return 'Super of'
135
+
136
+ @property
137
+ def name(self):
138
+ """Get the name of the MRO pointer."""
139
+ return self.mro_pointer.name
140
+
141
+ def igetattr(self, name, context=None):
142
+ """Retrieve the inferred values of the given attribute name."""
143
+
144
+ local_name = self._model.get(name)
145
+ if local_name:
146
+ yield local_name
147
+ return
148
+
149
+ try:
150
+ mro = self.super_mro()
151
+ except (MroError, SuperError) as exc:
152
+ # Don't let invalid MROs or invalid super calls
153
+ # to leak out as is from this function.
154
+ six.raise_from(NotFoundError, exc)
155
+
156
+ found = False
157
+ for cls in mro:
158
+ if name not in cls._locals:
159
+ continue
160
+
161
+ found = True
162
+ for infered in _infer_stmts([cls[name]], context, frame=self):
163
+ if not isinstance(infered, FunctionDef):
164
+ yield infered
165
+ continue
166
+
167
+ # We can obtain different descriptors from a super depending
168
+ # on what we are accessing and where the super call is.
169
+ if infered.type == 'classmethod':
170
+ yield BoundMethod(infered, cls)
171
+ elif self._scope.type == 'classmethod' and infered.type == 'method':
172
+ yield infered
173
+ elif self._class_based or infered.type == 'staticmethod':
174
+ yield infered
175
+ elif _is_property(infered):
176
+ # TODO: support other descriptors as well.
177
+ for value in infered.infer_call_result(self, context):
178
+ yield value
179
+ else:
180
+ yield BoundMethod(infered, cls)
181
+
182
+ if not found:
183
+ raise NotFoundError(name)
184
+
185
+ def getattr(self, name, context=None):
186
+ return list(self.igetattr(name, context=context))
@@ -19,28 +19,31 @@
19
19
  where it makes sense.
20
20
  """
21
21
 
22
- __doctype__ = "restructuredtext en"
23
22
  import collections
24
-
25
- from astroid.exceptions import InferenceError, NoDefault, NotFoundError
26
- from astroid.node_classes import unpack_infer
27
- from astroid.bases import InferenceContext, copy_context, \
28
- raise_if_nothing_infered, yes_if_nothing_infered, Instance, YES
29
- from astroid.nodes import const_factory
23
+ import operator
24
+ import sys
25
+
26
+ from astroid import arguments
27
+ from astroid import bases
28
+ from astroid import context as contextmod
29
+ from astroid import exceptions
30
+ from astroid import node_classes
30
31
  from astroid import nodes
32
+ from astroid import util
31
33
 
32
34
  BIN_OP_METHOD = {'+': '__add__',
33
35
  '-': '__sub__',
34
36
  '/': '__div__',
35
37
  '//': '__floordiv__',
36
38
  '*': '__mul__',
37
- '**': '__power__',
39
+ '**': '__pow__',
38
40
  '%': '__mod__',
39
41
  '&': '__and__',
40
42
  '|': '__or__',
41
43
  '^': '__xor__',
42
44
  '<<': '__lshift__',
43
45
  '>>': '__rshift__',
46
+ '@': '__matmul__'
44
47
  }
45
48
 
46
49
  UNARY_OP_METHOD = {'+': '__pos__',
@@ -53,7 +56,7 @@ UNARY_OP_METHOD = {'+': '__pos__',
53
56
 
54
57
  def tl_infer_unary_op(self, operator):
55
58
  if operator == 'not':
56
- return const_factory(not bool(self.elts))
59
+ return node_classes.const_factory(not bool(self.elts))
57
60
  raise TypeError() # XXX log unsupported operation
58
61
  nodes.Tuple.infer_unary_op = tl_infer_unary_op
59
62
  nodes.List.infer_unary_op = tl_infer_unary_op
@@ -61,19 +64,19 @@ nodes.List.infer_unary_op = tl_infer_unary_op
61
64
 
62
65
  def dict_infer_unary_op(self, operator):
63
66
  if operator == 'not':
64
- return const_factory(not bool(self.items))
67
+ return node_classes.const_factory(not bool(self.items))
65
68
  raise TypeError() # XXX log unsupported operation
66
69
  nodes.Dict.infer_unary_op = dict_infer_unary_op
67
70
 
68
71
 
69
72
  def const_infer_unary_op(self, operator):
70
73
  if operator == 'not':
71
- return const_factory(not self.value)
74
+ return node_classes.const_factory(not self.value)
72
75
  # XXX log potentially raised TypeError
73
76
  elif operator == '+':
74
- return const_factory(+self.value)
77
+ return node_classes.const_factory(+self.value)
75
78
  else: # operator == '-':
76
- return const_factory(-self.value)
79
+ return node_classes.const_factory(-self.value)
77
80
  nodes.Const.infer_unary_op = const_infer_unary_op
78
81
 
79
82
 
@@ -92,17 +95,23 @@ BIN_OP_IMPL = {'+': lambda a, b: a + b,
92
95
  '<<': lambda a, b: a << b,
93
96
  '>>': lambda a, b: a >> b,
94
97
  }
98
+
99
+ if sys.version_info >= (3, 5):
100
+ # MatMult is available since Python 3.5+.
101
+ BIN_OP_IMPL['@'] = operator.matmul
102
+
95
103
  for key, impl in list(BIN_OP_IMPL.items()):
96
104
  BIN_OP_IMPL[key+'='] = impl
97
105
 
98
- def const_infer_binary_op(self, operator, other, context):
106
+ def const_infer_binary_op(self, binop, other, context):
107
+ operator = binop.op
99
108
  for other in other.infer(context):
100
109
  if isinstance(other, nodes.Const):
101
110
  try:
102
111
  impl = BIN_OP_IMPL[operator]
103
112
 
104
113
  try:
105
- yield const_factory(impl(self.value, other.value))
114
+ yield node_classes.const_factory(impl(self.value, other.value))
106
115
  except Exception:
107
116
  # ArithmeticError is not enough: float >> float is a TypeError
108
117
  # TODO : let pylint know about the problem
@@ -110,68 +119,88 @@ def const_infer_binary_op(self, operator, other, context):
110
119
  except TypeError:
111
120
  # XXX log TypeError
112
121
  continue
113
- elif other is YES:
122
+ elif other is util.YES:
114
123
  yield other
115
124
  else:
116
125
  try:
117
- for val in other.infer_binary_op(operator, self, context):
126
+ for val in other.infer_binary_op(binop, self, context):
118
127
  yield val
119
128
  except AttributeError:
120
- yield YES
121
- nodes.Const.infer_binary_op = yes_if_nothing_infered(const_infer_binary_op)
129
+ yield util.YES
130
+ nodes.Const.infer_binary_op = bases.yes_if_nothing_inferred(const_infer_binary_op)
131
+
132
+
122
133
 
134
+ def _multiply_seq_by_int(self, binop, other, context):
135
+ node = self.__class__()
136
+ node.parent = binop
137
+ elts = []
138
+ for elt in self.elts:
139
+ infered = util.safe_infer(elt, context)
140
+ if infered is None:
141
+ infered = util.YES
142
+ elts.append(infered)
143
+ node.elts = elts * other.value
144
+ return node
123
145
 
124
- def tl_infer_binary_op(self, operator, other, context):
146
+
147
+ def _filter_uninferable_nodes(elts, context):
148
+ for elt in elts:
149
+ if elt is util.YES:
150
+ yield elt
151
+ else:
152
+ for inferred in elt.infer(context):
153
+ yield inferred
154
+
155
+
156
+ def tl_infer_binary_op(self, binop, other, context):
157
+ operator = binop.op
125
158
  for other in other.infer(context):
126
159
  if isinstance(other, self.__class__) and operator == '+':
127
160
  node = self.__class__()
128
- elts = [n for elt in self.elts for n in elt.infer(context)
129
- if not n is YES]
130
- elts += [n for elt in other.elts for n in elt.infer(context)
131
- if not n is YES]
161
+ node.parent = binop
162
+ elts = list(_filter_uninferable_nodes(self.elts, context))
163
+ elts += list(_filter_uninferable_nodes(other.elts, context))
132
164
  node.elts = elts
133
165
  yield node
134
166
  elif isinstance(other, nodes.Const) and operator == '*':
135
167
  if not isinstance(other.value, int):
136
- yield YES
168
+ yield util.YES
137
169
  continue
138
- node = self.__class__()
139
- elts = [n for elt in self.elts for n in elt.infer(context)
140
- if not n is YES] * other.value
141
- node.elts = elts
142
- yield node
143
- elif isinstance(other, Instance) and not isinstance(other, nodes.Const):
144
- yield YES
170
+ yield _multiply_seq_by_int(self, binop, other, context)
171
+ elif isinstance(other, bases.Instance) and not isinstance(other, nodes.Const):
172
+ yield util.YES
145
173
  # XXX else log TypeError
146
- nodes.Tuple.infer_binary_op = yes_if_nothing_infered(tl_infer_binary_op)
147
- nodes.List.infer_binary_op = yes_if_nothing_infered(tl_infer_binary_op)
174
+ nodes.Tuple.infer_binary_op = bases.yes_if_nothing_inferred(tl_infer_binary_op)
175
+ nodes.List.infer_binary_op = bases.yes_if_nothing_inferred(tl_infer_binary_op)
148
176
 
149
177
 
150
- def dict_infer_binary_op(self, operator, other, context):
178
+ def dict_infer_binary_op(self, binop, other, context):
151
179
  for other in other.infer(context):
152
- if isinstance(other, Instance) and isinstance(other._proxied, nodes.Class):
153
- yield YES
180
+ if isinstance(other, bases.Instance) and isinstance(other._proxied, nodes.ClassDef):
181
+ yield util.YES
154
182
  # XXX else log TypeError
155
- nodes.Dict.infer_binary_op = yes_if_nothing_infered(dict_infer_binary_op)
183
+ nodes.Dict.infer_binary_op = bases.yes_if_nothing_inferred(dict_infer_binary_op)
156
184
 
157
- def instance_infer_binary_op(self, operator, other, context):
185
+ def instance_infer_binary_op(self, binop, other, context):
186
+ operator = binop.op
158
187
  try:
159
188
  methods = self.getattr(BIN_OP_METHOD[operator])
160
- except (NotFoundError, KeyError):
189
+ except (exceptions.NotFoundError, KeyError):
161
190
  # Unknown operator
162
- yield YES
191
+ yield util.YES
163
192
  else:
164
193
  for method in methods:
165
- if not isinstance(method, nodes.Function):
194
+ if not isinstance(method, nodes.FunctionDef):
166
195
  continue
167
196
  for result in method.infer_call_result(self, context):
168
- if result is not YES:
197
+ if result is not util.YES:
169
198
  yield result
170
199
  # We are interested only in the first infered method,
171
200
  # don't go looking in the rest of the methods of the ancestors.
172
201
  break
173
202
 
174
- Instance.infer_binary_op = yes_if_nothing_infered(instance_infer_binary_op)
203
+ bases.Instance.infer_binary_op = bases.yes_if_nothing_inferred(instance_infer_binary_op)
175
204
 
176
205
 
177
206
  # assignment ##################################################################
@@ -192,7 +221,7 @@ def _resolve_looppart(parts, asspath, context):
192
221
  asspath = asspath[:]
193
222
  index = asspath.pop(0)
194
223
  for part in parts:
195
- if part is YES:
224
+ if part is util.YES:
196
225
  continue
197
226
  # XXX handle __iter__ and log potentially detected errors
198
227
  if not hasattr(part, 'itered'):
@@ -212,104 +241,125 @@ def _resolve_looppart(parts, asspath, context):
212
241
  # we achieved to resolved the assignment path,
213
242
  # don't infer the last part
214
243
  yield assigned
215
- elif assigned is YES:
244
+ elif assigned is util.YES:
216
245
  break
217
246
  else:
218
247
  # we are not yet on the last part of the path
219
248
  # search on each possibly inferred value
220
249
  try:
221
- for infered in _resolve_looppart(assigned.infer(context),
250
+ for inferred in _resolve_looppart(assigned.infer(context),
222
251
  asspath, context):
223
- yield infered
224
- except InferenceError:
252
+ yield inferred
253
+ except exceptions.InferenceError:
225
254
  break
226
255
 
227
256
 
228
- def for_assigned_stmts(self, node, context=None, asspath=None):
257
+ @bases.raise_if_nothing_inferred
258
+ def for_assigned_stmts(self, node=None, context=None, asspath=None):
229
259
  if asspath is None:
230
260
  for lst in self.iter.infer(context):
231
261
  if isinstance(lst, (nodes.Tuple, nodes.List)):
232
262
  for item in lst.elts:
233
263
  yield item
234
264
  else:
235
- for infered in _resolve_looppart(self.iter.infer(context),
265
+ for inferred in _resolve_looppart(self.iter.infer(context),
236
266
  asspath, context):
237
- yield infered
267
+ yield inferred
238
268
 
239
- nodes.For.assigned_stmts = raise_if_nothing_infered(for_assigned_stmts)
240
- nodes.Comprehension.assigned_stmts = raise_if_nothing_infered(for_assigned_stmts)
269
+ nodes.For.assigned_stmts = for_assigned_stmts
270
+ nodes.Comprehension.assigned_stmts = for_assigned_stmts
241
271
 
242
272
 
243
- def mulass_assigned_stmts(self, node, context=None, asspath=None):
273
+ def sequence_assigned_stmts(self, node=None, context=None, asspath=None):
244
274
  if asspath is None:
245
275
  asspath = []
246
- asspath.insert(0, self.elts.index(node))
247
- return self.parent.assigned_stmts(self, context, asspath)
248
- nodes.Tuple.assigned_stmts = mulass_assigned_stmts
249
- nodes.List.assigned_stmts = mulass_assigned_stmts
276
+ try:
277
+ index = self.elts.index(node)
278
+ except ValueError:
279
+ util.reraise(exceptions.InferenceError(
280
+ 'Tried to retrieve a node {node!r} which does not exist',
281
+ node=self, assign_path=asspath, context=context))
282
+
283
+ asspath.insert(0, index)
284
+ return self.parent.assigned_stmts(node=self, context=context, asspath=asspath)
285
+
286
+ nodes.Tuple.assigned_stmts = sequence_assigned_stmts
287
+ nodes.List.assigned_stmts = sequence_assigned_stmts
250
288
 
251
289
 
252
- def assend_assigned_stmts(self, context=None):
253
- return self.parent.assigned_stmts(self, context=context)
254
- nodes.AssName.assigned_stmts = assend_assigned_stmts
255
- nodes.AssAttr.assigned_stmts = assend_assigned_stmts
290
+ def assend_assigned_stmts(self, node=None, context=None, asspath=None):
291
+ return self.parent.assigned_stmts(node=self, context=context)
292
+ nodes.AssignName.assigned_stmts = assend_assigned_stmts
293
+ nodes.AssignAttr.assigned_stmts = assend_assigned_stmts
256
294
 
257
295
 
258
296
  def _arguments_infer_argname(self, name, context):
259
297
  # arguments information may be missing, in which case we can't do anything
260
298
  # more
261
299
  if not (self.args or self.vararg or self.kwarg):
262
- yield YES
300
+ yield util.YES
263
301
  return
264
302
  # first argument of instance/class method
265
303
  if self.args and getattr(self.args[0], 'name', None) == name:
266
304
  functype = self.parent.type
267
305
  if functype == 'method':
268
- yield Instance(self.parent.parent.frame())
306
+ yield bases.Instance(self.parent.parent.frame())
269
307
  return
270
308
  if functype == 'classmethod':
271
309
  yield self.parent.parent.frame()
272
310
  return
311
+
312
+ if context and context.callcontext:
313
+ call_site = arguments.CallSite(context.callcontext)
314
+ for value in call_site.infer_argument(self.parent, name, context):
315
+ yield value
316
+ return
317
+
318
+ # TODO: just provide the type here, no need to have an empty Dict.
273
319
  if name == self.vararg:
274
- vararg = const_factory(())
320
+ vararg = node_classes.const_factory(())
275
321
  vararg.parent = self
276
322
  yield vararg
277
323
  return
278
324
  if name == self.kwarg:
279
- kwarg = const_factory({})
325
+ kwarg = node_classes.const_factory({})
280
326
  kwarg.parent = self
281
327
  yield kwarg
282
328
  return
283
329
  # if there is a default value, yield it. And then yield YES to reflect
284
330
  # we can't guess given argument value
285
331
  try:
286
- context = copy_context(context)
287
- for infered in self.default_value(name).infer(context):
288
- yield infered
289
- yield YES
290
- except NoDefault:
291
- yield YES
332
+ context = contextmod.copy_context(context)
333
+ for inferred in self.default_value(name).infer(context):
334
+ yield inferred
335
+ yield util.YES
336
+ except exceptions.NoDefault:
337
+ yield util.YES
292
338
 
293
339
 
294
- def arguments_assigned_stmts(self, node, context, asspath=None):
340
+ def arguments_assigned_stmts(self, node=None, context=None, asspath=None):
295
341
  if context.callcontext:
296
342
  # reset call context/name
297
343
  callcontext = context.callcontext
298
- context = copy_context(context)
344
+ context = contextmod.copy_context(context)
299
345
  context.callcontext = None
300
- return callcontext.infer_argument(self.parent, node.name, context)
346
+ args = arguments.CallSite(callcontext)
347
+ return args.infer_argument(self.parent, node.name, context)
301
348
  return _arguments_infer_argname(self, node.name, context)
349
+
302
350
  nodes.Arguments.assigned_stmts = arguments_assigned_stmts
303
351
 
304
352
 
305
- def assign_assigned_stmts(self, node, context=None, asspath=None):
353
+ @bases.raise_if_nothing_inferred
354
+ def assign_assigned_stmts(self, node=None, context=None, asspath=None):
306
355
  if not asspath:
307
356
  yield self.value
308
357
  return
309
- for infered in _resolve_asspart(self.value.infer(context), asspath, context):
310
- yield infered
311
- nodes.Assign.assigned_stmts = raise_if_nothing_infered(assign_assigned_stmts)
312
- nodes.AugAssign.assigned_stmts = raise_if_nothing_infered(assign_assigned_stmts)
358
+ for inferred in _resolve_asspart(self.value.infer(context), asspath, context):
359
+ yield inferred
360
+
361
+ nodes.Assign.assigned_stmts = assign_assigned_stmts
362
+ nodes.AugAssign.assigned_stmts = assign_assigned_stmts
313
363
 
314
364
 
315
365
  def _resolve_asspart(parts, asspath, context):
@@ -328,28 +378,30 @@ def _resolve_asspart(parts, asspath, context):
328
378
  # we achieved to resolved the assignment path, don't infer the
329
379
  # last part
330
380
  yield assigned
331
- elif assigned is YES:
381
+ elif assigned is util.YES:
332
382
  return
333
383
  else:
334
384
  # we are not yet on the last part of the path search on each
335
385
  # possibly inferred value
336
386
  try:
337
- for infered in _resolve_asspart(assigned.infer(context),
387
+ for inferred in _resolve_asspart(assigned.infer(context),
338
388
  asspath, context):
339
- yield infered
340
- except InferenceError:
389
+ yield inferred
390
+ except exceptions.InferenceError:
341
391
  return
342
392
 
343
393
 
344
- def excepthandler_assigned_stmts(self, node, context=None, asspath=None):
345
- for assigned in unpack_infer(self.type):
346
- if isinstance(assigned, nodes.Class):
347
- assigned = Instance(assigned)
394
+ @bases.raise_if_nothing_inferred
395
+ def excepthandler_assigned_stmts(self, node=None, context=None, asspath=None):
396
+ for assigned in node_classes.unpack_infer(self.type):
397
+ if isinstance(assigned, nodes.ClassDef):
398
+ assigned = bases.Instance(assigned)
348
399
  yield assigned
349
- nodes.ExceptHandler.assigned_stmts = raise_if_nothing_infered(excepthandler_assigned_stmts)
400
+ nodes.ExceptHandler.assigned_stmts = bases.raise_if_nothing_inferred(excepthandler_assigned_stmts)
350
401
 
351
402
 
352
- def with_assigned_stmts(self, node, context=None, asspath=None):
403
+ @bases.raise_if_nothing_inferred
404
+ def with_assigned_stmts(self, node=None, context=None, asspath=None):
353
405
  if asspath is None:
354
406
  for _, vars in self.items:
355
407
  if vars is None:
@@ -358,13 +410,14 @@ def with_assigned_stmts(self, node, context=None, asspath=None):
358
410
  if isinstance(lst, (nodes.Tuple, nodes.List)):
359
411
  for item in lst.nodes:
360
412
  yield item
361
- nodes.With.assigned_stmts = raise_if_nothing_infered(with_assigned_stmts)
413
+ nodes.With.assigned_stmts = with_assigned_stmts
362
414
 
363
415
 
416
+ @bases.yes_if_nothing_inferred
364
417
  def starred_assigned_stmts(self, node=None, context=None, asspath=None):
365
418
  stmt = self.statement()
366
419
  if not isinstance(stmt, (nodes.Assign, nodes.For)):
367
- raise InferenceError()
420
+ raise exceptions.InferenceError()
368
421
 
369
422
  if isinstance(stmt, nodes.Assign):
370
423
  value = stmt.value
@@ -372,24 +425,24 @@ def starred_assigned_stmts(self, node=None, context=None, asspath=None):
372
425
 
373
426
  if sum(1 for node in lhs.nodes_of_class(nodes.Starred)) > 1:
374
427
  # Too many starred arguments in the expression.
375
- raise InferenceError()
428
+ raise exceptions.InferenceError()
376
429
 
377
430
  if context is None:
378
- context = InferenceContext()
431
+ context = contextmod.InferenceContext()
379
432
  try:
380
433
  rhs = next(value.infer(context))
381
- except InferenceError:
382
- yield YES
434
+ except exceptions.InferenceError:
435
+ yield util.YES
383
436
  return
384
- if rhs is YES or not hasattr(rhs, 'elts'):
437
+ if rhs is util.YES or not hasattr(rhs, 'elts'):
385
438
  # Not interested in inferred values without elts.
386
- yield YES
439
+ yield util.YES
387
440
  return
388
441
 
389
442
  elts = collections.deque(rhs.elts[:])
390
443
  if len(lhs.elts) > len(rhs.elts):
391
444
  # a, *b, c = (1, 2)
392
- raise InferenceError()
445
+ raise exceptions.InferenceError()
393
446
 
394
447
  # Unpack iteratively the values from the rhs of the assignment,
395
448
  # until the find the starred node. What will remain will
@@ -408,8 +461,10 @@ def starred_assigned_stmts(self, node=None, context=None, asspath=None):
408
461
  elts.pop()
409
462
  continue
410
463
  # We're done
411
- for elt in elts:
412
- yield elt
464
+ packed = nodes.List()
465
+ packed.elts = elts
466
+ packed.parent = self
467
+ yield packed
413
468
  break
414
469
 
415
470
  nodes.Starred.assigned_stmts = starred_assigned_stmts