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
@@ -21,45 +21,23 @@ from various source and using a cache of built modules)
21
21
  """
22
22
  from __future__ import print_function
23
23
 
24
- __docformat__ = "restructuredtext en"
25
-
26
- import collections
27
24
  import imp
28
25
  import os
29
- from os.path import dirname, join, isdir, exists
30
- from warnings import warn
31
26
  import zipimport
32
27
 
33
- from logilab.common.configuration import OptionsProviderMixIn
34
-
35
- from astroid.exceptions import AstroidBuildingException
28
+ from astroid import exceptions
36
29
  from astroid import modutils
30
+ from astroid import transforms
37
31
 
38
32
 
39
- def astroid_wrapper(func, modname):
40
- """wrapper to give to AstroidManager.project_from_files"""
41
- print('parsing %s...' % modname)
42
- try:
43
- return func(modname)
44
- except AstroidBuildingException as exc:
45
- print(exc)
46
- except Exception as exc:
47
- import traceback
48
- traceback.print_exc()
49
-
50
- def _silent_no_wrap(func, modname):
51
- """silent wrapper that doesn't do anything; can be used for tests"""
52
- return func(modname)
53
-
54
33
  def safe_repr(obj):
55
34
  try:
56
35
  return repr(obj)
57
- except:
36
+ except Exception: # pylint: disable=broad-except
58
37
  return '???'
59
38
 
60
39
 
61
-
62
- class AstroidManager(OptionsProviderMixIn):
40
+ class AstroidManager(object):
63
41
  """the astroid manager, responsible to build astroid from files
64
42
  or modules.
65
43
 
@@ -67,31 +45,27 @@ class AstroidManager(OptionsProviderMixIn):
67
45
  """
68
46
 
69
47
  name = 'astroid loader'
70
- options = (("ignore",
71
- {'type' : "csv", 'metavar' : "<file>",
72
- 'dest' : "black_list", "default" : ('CVS',),
73
- 'help' : "add <file> (may be a directory) to the black list\
74
- . It should be a base name, not a path. You may set this option multiple times\
75
- ."}),
76
- ("project",
77
- {'default': "No Name", 'type' : 'string', 'short': 'p',
78
- 'metavar' : '<project name>',
79
- 'help' : 'set the project name.'}),
80
- )
81
48
  brain = {}
49
+
82
50
  def __init__(self):
83
51
  self.__dict__ = AstroidManager.brain
84
52
  if not self.__dict__:
85
- OptionsProviderMixIn.__init__(self)
86
- self.load_defaults()
87
53
  # NOTE: cache entries are added by the [re]builder
88
54
  self.astroid_cache = {}
89
55
  self._mod_file_cache = {}
90
- self.transforms = collections.defaultdict(list)
91
56
  self._failed_import_hooks = []
92
57
  self.always_load_extensions = False
93
58
  self.optimize_ast = False
94
59
  self.extension_package_whitelist = set()
60
+ self._transform = transforms.TransformVisitor()
61
+
62
+ # Export these APIs for convenience
63
+ self.register_transform = self._transform.register_transform
64
+ self.unregister_transform = self._transform.unregister_transform
65
+
66
+ def visit_transforms(self, node):
67
+ """Visit the transforms and apply them to the given *node*."""
68
+ return self._transform.visit(node)
95
69
 
96
70
  def ast_from_file(self, filepath, modname=None, fallback=True, source=False):
97
71
  """given a module name, return the astroid object"""
@@ -105,15 +79,15 @@ class AstroidManager(OptionsProviderMixIn):
105
79
  modname = '.'.join(modutils.modpath_from_file(filepath))
106
80
  except ImportError:
107
81
  modname = filepath
108
- if modname in self.astroid_cache and self.astroid_cache[modname].file == filepath:
82
+ if modname in self.astroid_cache and self.astroid_cache[modname].source_file == filepath:
109
83
  return self.astroid_cache[modname]
110
84
  if source:
111
85
  from astroid.builder import AstroidBuilder
112
86
  return AstroidBuilder(self).file_build(filepath, modname)
113
87
  elif fallback and modname:
114
88
  return self.ast_from_module_name(modname)
115
- raise AstroidBuildingException('unable to get astroid for file %s' %
116
- filepath)
89
+ raise exceptions.AstroidBuildingException(
90
+ 'unable to get astroid for file %s' % filepath)
117
91
 
118
92
  def _build_stub_module(self, modname):
119
93
  from astroid.builder import AstroidBuilder
@@ -137,7 +111,7 @@ class AstroidManager(OptionsProviderMixIn):
137
111
  return self._build_stub_module(modname)
138
112
  old_cwd = os.getcwd()
139
113
  if context_file:
140
- os.chdir(dirname(context_file))
114
+ os.chdir(os.path.dirname(context_file))
141
115
  try:
142
116
  filepath, mp_type = self.file_from_module_name(modname, context_file)
143
117
  if mp_type == modutils.PY_ZIPMODULE:
@@ -151,18 +125,20 @@ class AstroidManager(OptionsProviderMixIn):
151
125
  module = modutils.load_module_from_name(modname)
152
126
  except Exception as ex:
153
127
  msg = 'Unable to load module %s (%s)' % (modname, ex)
154
- raise AstroidBuildingException(msg)
128
+ raise exceptions.AstroidBuildingException(msg)
155
129
  return self.ast_from_module(module, modname)
156
130
  elif mp_type == imp.PY_COMPILED:
157
- raise AstroidBuildingException("Unable to load compiled module %s" % (modname,))
131
+ msg = "Unable to load compiled module %s" % (modname,)
132
+ raise exceptions.AstroidBuildingException(msg)
158
133
  if filepath is None:
159
- raise AstroidBuildingException("Unable to load module %s" % (modname,))
134
+ msg = "Unable to load module %s" % (modname,)
135
+ raise exceptions.AstroidBuildingException(msg)
160
136
  return self.ast_from_file(filepath, modname, fallback=False)
161
- except AstroidBuildingException as e:
137
+ except exceptions.AstroidBuildingException as e:
162
138
  for hook in self._failed_import_hooks:
163
139
  try:
164
140
  return hook(modname)
165
- except AstroidBuildingException:
141
+ except exceptions.AstroidBuildingException:
166
142
  pass
167
143
  raise e
168
144
  finally:
@@ -186,11 +162,12 @@ class AstroidManager(OptionsProviderMixIn):
186
162
  module = builder.string_build(importer.get_source(resource),
187
163
  zmodname, filepath)
188
164
  return module
189
- except:
165
+ except Exception: # pylint: disable=broad-except
190
166
  continue
191
167
  return None
192
168
 
193
169
  def file_from_module_name(self, modname, contextfile):
170
+ # pylint: disable=redefined-variable-type
194
171
  try:
195
172
  value = self._mod_file_cache[(modname, contextfile)]
196
173
  except KeyError:
@@ -199,9 +176,9 @@ class AstroidManager(OptionsProviderMixIn):
199
176
  modname.split('.'), context_file=contextfile)
200
177
  except ImportError as ex:
201
178
  msg = 'Unable to load module %s (%s)' % (modname, ex)
202
- value = AstroidBuildingException(msg)
179
+ value = exceptions.AstroidBuildingException(msg)
203
180
  self._mod_file_cache[(modname, contextfile)] = value
204
- if isinstance(value, AstroidBuildingException):
181
+ if isinstance(value, exceptions.AstroidBuildingException):
205
182
  raise value
206
183
  return value
207
184
 
@@ -226,12 +203,11 @@ class AstroidManager(OptionsProviderMixIn):
226
203
  try:
227
204
  modname = klass.__module__
228
205
  except AttributeError:
229
- raise AstroidBuildingException(
230
- 'Unable to get module for class %s' % safe_repr(klass))
206
+ msg = 'Unable to get module for class %s' % safe_repr(klass)
207
+ raise exceptions.AstroidBuildingException(msg)
231
208
  modastroid = self.ast_from_module_name(modname)
232
209
  return modastroid.getattr(klass.__name__)[0] # XXX
233
210
 
234
-
235
211
  def infer_ast_from_something(self, obj, context=None):
236
212
  """infer astroid for the given class"""
237
213
  if hasattr(obj, '__class__') and not isinstance(obj, type):
@@ -241,75 +217,29 @@ class AstroidManager(OptionsProviderMixIn):
241
217
  try:
242
218
  modname = klass.__module__
243
219
  except AttributeError:
244
- raise AstroidBuildingException(
245
- 'Unable to get module for %s' % safe_repr(klass))
220
+ msg = 'Unable to get module for %s' % safe_repr(klass)
221
+ raise exceptions.AstroidBuildingException(msg)
246
222
  except Exception as ex:
247
- raise AstroidBuildingException(
248
- 'Unexpected error while retrieving module for %s: %s'
249
- % (safe_repr(klass), ex))
223
+ msg = ('Unexpected error while retrieving module for %s: %s'
224
+ % (safe_repr(klass), ex))
225
+ raise exceptions.AstroidBuildingException(msg)
250
226
  try:
251
227
  name = klass.__name__
252
228
  except AttributeError:
253
- raise AstroidBuildingException(
254
- 'Unable to get name for %s' % safe_repr(klass))
229
+ msg = 'Unable to get name for %s' % safe_repr(klass)
230
+ raise exceptions.AstroidBuildingException(msg)
255
231
  except Exception as ex:
256
- raise AstroidBuildingException(
257
- 'Unexpected error while retrieving name for %s: %s'
258
- % (safe_repr(klass), ex))
232
+ exc = ('Unexpected error while retrieving name for %s: %s'
233
+ % (safe_repr(klass), ex))
234
+ raise exceptions.AstroidBuildingException(exc)
259
235
  # take care, on living object __module__ is regularly wrong :(
260
236
  modastroid = self.ast_from_module_name(modname)
261
237
  if klass is obj:
262
- for infered in modastroid.igetattr(name, context):
263
- yield infered
238
+ for inferred in modastroid.igetattr(name, context):
239
+ yield inferred
264
240
  else:
265
- for infered in modastroid.igetattr(name, context):
266
- yield infered.instanciate_class()
267
-
268
- def project_from_files(self, files, func_wrapper=astroid_wrapper,
269
- project_name=None, black_list=None):
270
- """return a Project from a list of files or modules"""
271
- # build the project representation
272
- project_name = project_name or self.config.project
273
- black_list = black_list or self.config.black_list
274
- project = Project(project_name)
275
- for something in files:
276
- if not exists(something):
277
- fpath = modutils.file_from_modpath(something.split('.'))
278
- elif isdir(something):
279
- fpath = join(something, '__init__.py')
280
- else:
281
- fpath = something
282
- astroid = func_wrapper(self.ast_from_file, fpath)
283
- if astroid is None:
284
- continue
285
- # XXX why is first file defining the project.path ?
286
- project.path = project.path or astroid.file
287
- project.add_module(astroid)
288
- base_name = astroid.name
289
- # recurse in package except if __init__ was explicitly given
290
- if astroid.package and something.find('__init__') == -1:
291
- # recurse on others packages / modules if this is a package
292
- for fpath in modutils.get_module_files(dirname(astroid.file),
293
- black_list):
294
- astroid = func_wrapper(self.ast_from_file, fpath)
295
- if astroid is None or astroid.name == base_name:
296
- continue
297
- project.add_module(astroid)
298
- return project
299
-
300
- def register_transform(self, node_class, transform, predicate=None):
301
- """Register `transform(node)` function to be applied on the given
302
- Astroid's `node_class` if `predicate` is None or returns true
303
- when called with the node as argument.
304
-
305
- The transform function may return a value which is then used to
306
- substitute the original node in the tree.
307
- """
308
- self.transforms[node_class].append((transform, predicate))
309
-
310
- def unregister_transform(self, node_class, transform, predicate=None):
311
- """Unregister the given transform."""
312
- self.transforms[node_class].remove((transform, predicate))
241
+ for inferred in modastroid.igetattr(name, context):
242
+ yield inferred.instantiate_class()
313
243
 
314
244
  def register_failed_import_hook(self, hook):
315
245
  """Registers a hook to resolve imports that cannot be found otherwise.
@@ -321,30 +251,6 @@ class AstroidManager(OptionsProviderMixIn):
321
251
  """
322
252
  self._failed_import_hooks.append(hook)
323
253
 
324
- def transform(self, node):
325
- """Call matching transforms for the given node if any and return the
326
- transformed node.
327
- """
328
- cls = node.__class__
329
- if cls not in self.transforms:
330
- # no transform registered for this class of node
331
- return node
332
-
333
- transforms = self.transforms[cls]
334
- orig_node = node # copy the reference
335
- for transform_func, predicate in transforms:
336
- if predicate is None or predicate(node):
337
- ret = transform_func(node)
338
- # if the transformation function returns something, it's
339
- # expected to be a replacement for the node
340
- if ret is not None:
341
- if node is not orig_node:
342
- # node has already be modified by some previous
343
- # transformation, warn about it
344
- warn('node %s substituted multiple times' % node)
345
- node = ret
346
- return node
347
-
348
254
  def cache_module(self, module):
349
255
  """Cache a module if no module with the same name is known yet."""
350
256
  self.astroid_cache.setdefault(module.name, module)
@@ -359,33 +265,3 @@ class AstroidManager(OptionsProviderMixIn):
359
265
  import astroid.raw_building
360
266
  astroid.raw_building._astroid_bootstrapping(
361
267
  astroid_builtin=astroid_builtin)
362
-
363
-
364
- class Project(object):
365
- """a project handle a set of modules / packages"""
366
- def __init__(self, name=''):
367
- self.name = name
368
- self.path = None
369
- self.modules = []
370
- self.locals = {}
371
- self.__getitem__ = self.locals.__getitem__
372
- self.__iter__ = self.locals.__iter__
373
- self.values = self.locals.values
374
- self.keys = self.locals.keys
375
- self.items = self.locals.items
376
-
377
- def add_module(self, node):
378
- self.locals[node.name] = node
379
- self.modules.append(node)
380
-
381
- def get_module(self, name):
382
- return self.locals[name]
383
-
384
- def get_children(self):
385
- return self.modules
386
-
387
- def __repr__(self):
388
- return '<Project %r at %s (%s modules)>' % (self.name, id(self),
389
- len(self.modules))
390
-
391
-
@@ -18,16 +18,16 @@
18
18
  """This module contains some mixins for the different nodes.
19
19
  """
20
20
 
21
- from logilab.common.decorators import cachedproperty
21
+ import warnings
22
22
 
23
- from astroid.exceptions import (AstroidBuildingException, InferenceError,
24
- NotFoundError)
23
+ from astroid import decorators
24
+ from astroid import exceptions
25
25
 
26
26
 
27
27
  class BlockRangeMixIn(object):
28
28
  """override block range """
29
29
 
30
- @cachedproperty
30
+ @decorators.cachedproperty
31
31
  def blockstart_tolineno(self):
32
32
  return self.lineno
33
33
 
@@ -55,15 +55,29 @@ class FilterStmtsMixin(object):
55
55
  return [node], True
56
56
  return _stmts, False
57
57
 
58
- def ass_type(self):
58
+ def assign_type(self):
59
59
  return self
60
60
 
61
+ def ass_type(self):
62
+ warnings.warn('%s.ass_type() is deprecated and slated for removal '
63
+ 'in astroid 2.0, use %s.assign_type() instead.'
64
+ % (type(self).__name__, type(self).__name__),
65
+ PendingDeprecationWarning, stacklevel=2)
66
+ return self.assign_type()
67
+
61
68
 
62
69
  class AssignTypeMixin(object):
63
70
 
64
- def ass_type(self):
71
+ def assign_type(self):
65
72
  return self
66
73
 
74
+ def ass_type(self):
75
+ warnings.warn('%s.ass_type() is deprecated and slated for removal '
76
+ 'in astroid 2.0, use %s.assign_type() instead.'
77
+ % (type(self).__name__, type(self).__name__),
78
+ PendingDeprecationWarning, stacklevel=2)
79
+ return self.assign_type()
80
+
67
81
  def _get_filtered_stmts(self, lookup_node, node, _stmts, mystmt):
68
82
  """method used in filter_stmts"""
69
83
  if self is mystmt:
@@ -77,11 +91,18 @@ class AssignTypeMixin(object):
77
91
 
78
92
  class ParentAssignTypeMixin(AssignTypeMixin):
79
93
 
94
+ def assign_type(self):
95
+ return self.parent.assign_type()
96
+
80
97
  def ass_type(self):
81
- return self.parent.ass_type()
98
+ warnings.warn('%s.ass_type() is deprecated and slated for removal '
99
+ 'in astroid 2.0, use %s.assign_type() instead.'
100
+ % (type(self).__name__, type(self).__name__),
101
+ PendingDeprecationWarning, stacklevel=2)
102
+ return self.assign_type()
82
103
 
83
104
 
84
- class FromImportMixIn(FilterStmtsMixin):
105
+ class ImportFromMixin(FilterStmtsMixin):
85
106
  """MixIn for From and Import Nodes"""
86
107
 
87
108
  def _infer_name(self, frame, name):
@@ -104,11 +125,14 @@ class FromImportMixIn(FilterStmtsMixin):
104
125
  # FIXME: we used to raise InferenceError here, but why ?
105
126
  return mymodule
106
127
  try:
107
- return mymodule.import_module(modname, level=level)
108
- except AstroidBuildingException:
109
- raise InferenceError(modname)
128
+ return mymodule.import_module(modname, level=level,
129
+ relative_only=level and level >= 1)
130
+ except exceptions.AstroidBuildingException as ex:
131
+ if isinstance(ex.args[0], SyntaxError):
132
+ raise exceptions.InferenceError(str(ex))
133
+ raise exceptions.InferenceError(modname)
110
134
  except SyntaxError as ex:
111
- raise InferenceError(str(ex))
135
+ raise exceptions.InferenceError(str(ex))
112
136
 
113
137
  def real_name(self, asname):
114
138
  """get name from 'as' name"""
@@ -120,5 +144,4 @@ class FromImportMixIn(FilterStmtsMixin):
120
144
  _asname = name
121
145
  if asname == _asname:
122
146
  return name
123
- raise NotFoundError(asname)
124
-
147
+ raise exceptions.NotFoundError(asname)
@@ -28,10 +28,9 @@
28
28
  """
29
29
  from __future__ import with_statement
30
30
 
31
- __docformat__ = "restructuredtext en"
32
-
33
31
  import imp
34
32
  import os
33
+ import platform
35
34
  import sys
36
35
  from distutils.sysconfig import get_python_lib
37
36
  from distutils.errors import DistutilsPlatformError
@@ -42,8 +41,6 @@ try:
42
41
  except ImportError:
43
42
  pkg_resources = None
44
43
 
45
- from logilab.common import _handle_blacklist
46
-
47
44
  PY_ZIPMODULE = object()
48
45
 
49
46
  if sys.platform.startswith('win'):
@@ -53,12 +50,7 @@ else:
53
50
  PY_SOURCE_EXTS = ('py',)
54
51
  PY_COMPILED_EXTS = ('so',)
55
52
 
56
- # Notes about STD_LIB_DIRS
57
- # Consider arch-specific installation for STD_LIB_DIRS definition
58
- # :mod:`distutils.sysconfig` contains to much hardcoded values to rely on
59
- #
60
- # :see: `Problems with /usr/lib64 builds <http://bugs.python.org/issue1294959>`_
61
- # :see: `FHS <http://www.pathname.com/fhs/pub/fhs-2.3.html#LIBLTQUALGTALTERNATEFORMATESSENTIAL>`_
53
+
62
54
  try:
63
55
  # The explicit sys.prefix is to work around a patch in virtualenv that
64
56
  # replaces the 'real' sys.prefix (i.e. the location of the binary)
@@ -70,22 +62,53 @@ try:
70
62
  # Take care of installations where exec_prefix != prefix.
71
63
  get_python_lib(standard_lib=True, prefix=sys.exec_prefix),
72
64
  get_python_lib(standard_lib=True)])
73
- if os.name == 'nt':
74
- STD_LIB_DIRS.add(os.path.join(sys.prefix, 'dlls'))
75
- try:
76
- # real_prefix is defined when running inside virtualenv.
77
- STD_LIB_DIRS.add(os.path.join(sys.real_prefix, 'dlls'))
78
- except AttributeError:
79
- pass
80
65
  # get_python_lib(standard_lib=1) is not available on pypy, set STD_LIB_DIR to
81
66
  # non-valid path, see https://bugs.pypy.org/issue1164
82
67
  except DistutilsPlatformError:
83
68
  STD_LIB_DIRS = set()
84
69
 
85
- EXT_LIB_DIR = get_python_lib()
70
+ if os.name == 'nt':
71
+ STD_LIB_DIRS.add(os.path.join(sys.prefix, 'dlls'))
72
+ try:
73
+ # real_prefix is defined when running inside virtualenv.
74
+ STD_LIB_DIRS.add(os.path.join(sys.real_prefix, 'dlls'))
75
+ except AttributeError:
76
+ pass
77
+ if platform.python_implementation() == 'PyPy':
78
+ _root = os.path.join(sys.prefix, 'lib_pypy')
79
+ STD_LIB_DIRS.add(_root)
80
+ try:
81
+ # real_prefix is defined when running inside virtualenv.
82
+ STD_LIB_DIRS.add(os.path.join(sys.real_prefix, 'lib_pypy'))
83
+ except AttributeError:
84
+ pass
85
+ del _root
86
+ if os.name == 'posix':
87
+ # Need the real prefix is we're under a virtualenv, otherwise
88
+ # the usual one will do.
89
+ try:
90
+ prefix = sys.real_prefix
91
+ except AttributeError:
92
+ prefix = sys.prefix
93
+
94
+ def _posix_path(path):
95
+ base_python = 'python%d.%d' % sys.version_info[:2]
96
+ return os.path.join(prefix, path, base_python)
97
+
98
+ STD_LIB_DIRS.add(_posix_path('lib'))
99
+ if sys.maxsize > 2**32:
100
+ # This tries to fix a problem with /usr/lib64 builds,
101
+ # where systems are running both 32-bit and 64-bit code
102
+ # on the same machine, which reflects into the places where
103
+ # standard library could be found. More details can be found
104
+ # here http://bugs.python.org/issue1294959.
105
+ # An easy reproducing case would be
106
+ # https://github.com/PyCQA/pylint/issues/712#issuecomment-163178753
107
+ STD_LIB_DIRS.add(_posix_path('lib64'))
86
108
 
87
- BUILTIN_MODULES = dict(zip(sys.builtin_module_names,
88
- [1]*len(sys.builtin_module_names)))
109
+ EXT_LIB_DIR = get_python_lib()
110
+ IS_JYTHON = platform.python_implementation() == 'Jython'
111
+ BUILTIN_MODULES = dict.fromkeys(sys.builtin_module_names, True)
89
112
 
90
113
 
91
114
  class NoSourceFile(Exception):
@@ -97,6 +120,32 @@ def _normalize_path(path):
97
120
  return os.path.normcase(os.path.abspath(path))
98
121
 
99
122
 
123
+ def _path_from_filename(filename, is_jython=IS_JYTHON):
124
+ if not is_jython:
125
+ if sys.version_info > (3, 0):
126
+ return filename
127
+ else:
128
+ if filename.endswith(".pyc"):
129
+ return filename[:-1]
130
+ return filename
131
+ head, has_pyclass, _ = filename.partition("$py.class")
132
+ if has_pyclass:
133
+ return head + ".py"
134
+ return filename
135
+
136
+
137
+ def _handle_blacklist(blacklist, dirnames, filenames):
138
+ """remove files/directories in the black list
139
+
140
+ dirnames/filenames are usually from os.walk
141
+ """
142
+ for norecurs in blacklist:
143
+ if norecurs in dirnames:
144
+ dirnames.remove(norecurs)
145
+ elif norecurs in filenames:
146
+ filenames.remove(norecurs)
147
+
148
+
100
149
  _NORM_PATH_CACHE = {}
101
150
 
102
151
  def _cache_normalize_path(path):
@@ -112,7 +161,7 @@ def _cache_normalize_path(path):
112
161
  result = _NORM_PATH_CACHE[path] = _normalize_path(path)
113
162
  return result
114
163
 
115
- def load_module_from_name(dotted_name, path=None, use_sys=1):
164
+ def load_module_from_name(dotted_name, path=None, use_sys=True):
116
165
  """Load a Python module from its name.
117
166
 
118
167
  :type dotted_name: str
@@ -184,14 +233,16 @@ def load_module_from_modpath(parts, path=None, use_sys=1):
184
233
  if prevmodule:
185
234
  setattr(prevmodule, part, module)
186
235
  _file = getattr(module, '__file__', '')
236
+ prevmodule = module
237
+ if not _file and _is_namespace(curname):
238
+ continue
187
239
  if not _file and len(modpath) != len(parts):
188
240
  raise ImportError('no module in %s' % '.'.join(parts[len(modpath):]))
189
241
  path = [os.path.dirname(_file)]
190
- prevmodule = module
191
242
  return module
192
243
 
193
244
 
194
- def load_module_from_file(filepath, path=None, use_sys=1, extrapath=None):
245
+ def load_module_from_file(filepath, path=None, use_sys=True, extrapath=None):
195
246
  """Load a Python module from it's path.
196
247
 
197
248
  :type filepath: str
@@ -219,9 +270,11 @@ def load_module_from_file(filepath, path=None, use_sys=1, extrapath=None):
219
270
 
220
271
  def _check_init(path, mod_path):
221
272
  """check there are some __init__.py all along the way"""
273
+ modpath = []
222
274
  for part in mod_path:
275
+ modpath.append(part)
223
276
  path = os.path.join(path, part)
224
- if not _has_init(path):
277
+ if not _is_namespace('.'.join(modpath)) and not _has_init(path):
225
278
  return False
226
279
  return True
227
280
 
@@ -246,7 +299,9 @@ def modpath_from_file(filename, extrapath=None):
246
299
  :rtype: list(str)
247
300
  :return: the corresponding splitted module's name
248
301
  """
249
- base = os.path.splitext(os.path.abspath(filename))[0]
302
+ filename = _path_from_filename(filename)
303
+ filename = os.path.abspath(filename)
304
+ base = os.path.splitext(filename)[0]
250
305
  if extrapath is not None:
251
306
  for path_ in extrapath:
252
307
  path = os.path.abspath(path_)
@@ -317,8 +372,8 @@ def file_info_from_modpath(modpath, path=None, context_file=None):
317
372
  def get_module_part(dotted_name, context_file=None):
318
373
  """given a dotted name return the module part of the name :
319
374
 
320
- >>> get_module_part('logilab.common.modutils.get_module_part')
321
- 'logilab.common.modutils'
375
+ >>> get_module_part('astroid.as_string.dump')
376
+ 'astroid.as_string'
322
377
 
323
378
  :type dotted_name: str
324
379
  :param dotted_name: full name of the identifier we are interested in
@@ -382,9 +437,8 @@ def get_module_files(src_directory, blacklist):
382
437
  path of the directory corresponding to the package
383
438
 
384
439
  :type blacklist: list or tuple
385
- :param blacklist:
386
- optional list of files or directory to ignore, default to the value of
387
- `logilab.common.STD_BLACKLIST`
440
+ :param blacklist: iterable
441
+ list of files or directories to ignore.
388
442
 
389
443
  :rtype: list
390
444
  :return:
@@ -419,7 +473,8 @@ def get_source_file(filename, include_no_ext=False):
419
473
  :rtype: str
420
474
  :return: the absolute path of the source file if it exists
421
475
  """
422
- base, orig_ext = os.path.splitext(os.path.abspath(filename))
476
+ filename = os.path.abspath(_path_from_filename(filename))
477
+ base, orig_ext = os.path.splitext(filename)
423
478
  for ext in PY_SOURCE_EXTS:
424
479
  source_path = '%s.%s' % (base, ext)
425
480
  if os.path.exists(source_path):
@@ -464,7 +519,8 @@ def is_standard_module(modname, std_path=None):
464
519
  # modules which are not living in a file are considered standard
465
520
  # (sys and __builtin__ for instance)
466
521
  if filename is None:
467
- return True
522
+ # we assume there are no namespaces in stdlib
523
+ return not _is_namespace(modname)
468
524
  filename = _normalize_path(filename)
469
525
  if filename.startswith(_cache_normalize_path(EXT_LIB_DIR)):
470
526
  return False
@@ -538,15 +594,27 @@ def _file_from_modpath(modpath, path=None, context=None):
538
594
  return mp_filename, mtype
539
595
 
540
596
  def _search_zip(modpath, pic):
541
- for filepath, importer in pic.items():
597
+ for filepath, importer in list(pic.items()):
542
598
  if importer is not None:
543
599
  if importer.find_module(modpath[0]):
544
600
  if not importer.find_module(os.path.sep.join(modpath)):
545
601
  raise ImportError('No module named %s in %s/%s' % (
546
602
  '.'.join(modpath[1:]), filepath, modpath))
547
- return PY_ZIPMODULE, os.path.abspath(filepath) + os.path.sep + os.path.sep.join(modpath), filepath
603
+ return (PY_ZIPMODULE,
604
+ os.path.abspath(filepath) + os.path.sep + os.path.sep.join(modpath),
605
+ filepath)
548
606
  raise ImportError('No module named %s' % '.'.join(modpath))
549
607
 
608
+ try:
609
+ import pkg_resources
610
+ except ImportError:
611
+ pkg_resources = None
612
+
613
+
614
+ def _is_namespace(modname):
615
+ return (pkg_resources is not None
616
+ and modname in pkg_resources._namespace_packages)
617
+
550
618
 
551
619
  def _module_file(modpath, path=None):
552
620
  """get a module type / file path
@@ -579,14 +647,13 @@ def _module_file(modpath, path=None):
579
647
  except AttributeError:
580
648
  checkeggs = False
581
649
  # pkg_resources support (aka setuptools namespace packages)
582
- if (pkg_resources is not None
583
- and modpath[0] in pkg_resources._namespace_packages
584
- and modpath[0] in sys.modules
585
- and len(modpath) > 1):
650
+ if _is_namespace(modpath[0]) and modpath[0] in sys.modules:
586
651
  # setuptools has added into sys.modules a module object with proper
587
652
  # __path__, get back information from there
588
653
  module = sys.modules[modpath.pop(0)]
589
- path = module.__path__
654
+ path = list(module.__path__)
655
+ if not modpath:
656
+ return imp.C_BUILTIN, None
590
657
  imported = []
591
658
  while modpath:
592
659
  modname = modpath[0]
@@ -609,7 +676,7 @@ def _module_file(modpath, path=None):
609
676
  # Don't forget to close the stream to avoid
610
677
  # spurious ResourceWarnings.
611
678
  if stream:
612
- stream.close()
679
+ stream.close()
613
680
 
614
681
  if checkeggs and mp_filename:
615
682
  fullabspath = [_cache_normalize_path(x) for x in _path]
@@ -639,7 +706,11 @@ def _module_file(modpath, path=None):
639
706
  except IOError:
640
707
  path = [mp_filename]
641
708
  else:
642
- if b'pkgutil' in data and b'extend_path' in data:
709
+ extend_path = b'pkgutil' in data and b'extend_path' in data
710
+ declare_namespace = (
711
+ b"pkg_resources" in data
712
+ and b"declare_namespace(__name__)" in data)
713
+ if extend_path or declare_namespace:
643
714
  # extend_path is called, search sys.path for module/packages
644
715
  # of this name see pkgutil.extend_path documentation
645
716
  path = [os.path.join(p, *imported) for p in sys.path