libv8 7.3.492.27.0 → 8.4.255.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +11 -14
- data/CHANGELOG.md +10 -0
- data/README.md +10 -11
- data/Rakefile +30 -36
- data/ext/libv8/builder.rb +1 -1
- data/lib/libv8/version.rb +1 -1
- data/libv8.gemspec +1 -3
- data/vendor/depot_tools/{cipd.ps1 → .cipd_impl.ps1} +0 -0
- data/vendor/depot_tools/.gitattributes +1 -1
- data/vendor/depot_tools/.gitignore +7 -2
- data/vendor/depot_tools/.style.yapf +3 -1
- data/vendor/depot_tools/.vpython +55 -0
- data/vendor/depot_tools/.vpython3 +23 -0
- data/vendor/depot_tools/CROS_OWNERS +3 -1
- data/vendor/depot_tools/GOMA_OWNERS +9 -0
- data/vendor/depot_tools/LUCI_OWNERS +5 -0
- data/vendor/depot_tools/OWNERS +21 -6
- data/vendor/depot_tools/PRESUBMIT.py +35 -18
- data/vendor/depot_tools/README.git-cl.md +0 -14
- data/vendor/depot_tools/README.md +1 -1
- data/vendor/depot_tools/WATCHLISTS +2 -2
- data/vendor/depot_tools/auth.py +60 -772
- data/vendor/depot_tools/autoninja +12 -6
- data/vendor/depot_tools/autoninja.bat +14 -6
- data/vendor/depot_tools/autoninja.py +64 -27
- data/vendor/depot_tools/bb +1 -1
- data/vendor/depot_tools/bootstrap/{win/README.md → README.md} +28 -14
- data/vendor/depot_tools/bootstrap/{win/win_tools.py → bootstrap.py} +60 -43
- data/vendor/depot_tools/bootstrap/{win/git-bash.template.sh → git-bash.template.sh} +1 -1
- data/vendor/depot_tools/bootstrap/{win/git.template.bat → git.template.bat} +0 -0
- data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
- data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
- data/vendor/depot_tools/bootstrap/{win/profile.d.python.sh → profile.d.python.sh} +0 -0
- data/vendor/depot_tools/bootstrap/{win/python27.bleeding_edge.bat → python27.bat} +0 -0
- data/vendor/depot_tools/bootstrap/{win/python27.new.bat → python3.bat} +3 -3
- data/vendor/depot_tools/bootstrap/{win/win_tools.bat → win_tools.bat} +21 -16
- data/vendor/depot_tools/bootstrap_python3 +35 -0
- data/vendor/depot_tools/cbuildbot +1 -1
- data/vendor/depot_tools/chrome_set_ver +1 -1
- data/vendor/depot_tools/cipd +43 -39
- data/vendor/depot_tools/cipd.bat +2 -2
- data/vendor/depot_tools/cipd_client_version +1 -1
- data/vendor/depot_tools/cipd_client_version.digests +15 -14
- data/vendor/depot_tools/cipd_manifest.txt +31 -8
- data/vendor/depot_tools/cipd_manifest.versions +278 -158
- data/vendor/depot_tools/cit.py +9 -7
- data/vendor/depot_tools/clang_format.py +4 -1
- data/vendor/depot_tools/clang_format_merge_driver.py +10 -8
- data/vendor/depot_tools/compile_single_file.py +7 -2
- data/vendor/depot_tools/cpplint.py +51 -45
- data/vendor/depot_tools/cros +87 -0
- data/vendor/depot_tools/cros_sdk +1 -1
- data/vendor/depot_tools/crosjobs +13 -0
- data/vendor/depot_tools/detect_host_arch.py +0 -1
- data/vendor/depot_tools/dirmd +12 -0
- data/vendor/depot_tools/dirmd.bat +7 -0
- data/vendor/depot_tools/download_from_google_storage.py +47 -27
- data/vendor/depot_tools/ensure_bootstrap +14 -0
- data/vendor/depot_tools/fetch +14 -1
- data/vendor/depot_tools/fetch.bat +14 -1
- data/vendor/depot_tools/fetch.py +5 -7
- data/vendor/depot_tools/fetch_configs/chromium.py +6 -4
- data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
- data/vendor/depot_tools/fetch_configs/ios_internal.py +10 -19
- data/vendor/depot_tools/fix_encoding.py +19 -5
- data/vendor/depot_tools/gclient +28 -12
- data/vendor/depot_tools/gclient-new-workdir.py +2 -0
- data/vendor/depot_tools/gclient.bat +18 -1
- data/vendor/depot_tools/gclient.py +160 -119
- data/vendor/depot_tools/gclient_eval.py +119 -107
- data/vendor/depot_tools/gclient_paths.py +67 -57
- data/vendor/depot_tools/gclient_scm.py +181 -159
- data/vendor/depot_tools/gclient_utils.py +177 -124
- data/vendor/depot_tools/gerrit_client.py +21 -13
- data/vendor/depot_tools/gerrit_util.py +188 -228
- data/vendor/depot_tools/git-cache +1 -1
- data/vendor/depot_tools/git-cl +1 -1
- data/vendor/depot_tools/git-drover +1 -1
- data/vendor/depot_tools/git-find-releases +1 -1
- data/vendor/depot_tools/git-footers +1 -1
- data/vendor/depot_tools/git-freeze +1 -1
- data/vendor/depot_tools/git-hyper-blame +1 -1
- data/vendor/depot_tools/git-map +1 -1
- data/vendor/depot_tools/git-map-branches +1 -1
- data/vendor/depot_tools/git-mark-merge-base +1 -1
- data/vendor/depot_tools/git-nav-downstream +1 -1
- data/vendor/depot_tools/git-new-branch +1 -1
- data/vendor/depot_tools/git-number +1 -1
- data/vendor/depot_tools/git-rebase-update +1 -1
- data/vendor/depot_tools/git-rename-branch +1 -1
- data/vendor/depot_tools/git-reparent-branch +1 -1
- data/vendor/depot_tools/git-retry +1 -1
- data/vendor/depot_tools/git-squash-branch +1 -1
- data/vendor/depot_tools/git-thaw +1 -1
- data/vendor/depot_tools/git-upstream-diff +1 -1
- data/vendor/depot_tools/git_cache.py +255 -360
- data/vendor/depot_tools/git_cl.py +1562 -2059
- data/vendor/depot_tools/git_cl_completion.sh +16 -2
- data/vendor/depot_tools/git_common.py +77 -32
- data/vendor/depot_tools/git_drover.py +17 -8
- data/vendor/depot_tools/git_find_releases.py +11 -9
- data/vendor/depot_tools/git_footers.py +13 -9
- data/vendor/depot_tools/git_freezer.py +3 -1
- data/vendor/depot_tools/git_hyper_blame.py +25 -32
- data/vendor/depot_tools/git_map.py +115 -93
- data/vendor/depot_tools/git_map_branches.py +11 -10
- data/vendor/depot_tools/git_mark_merge_base.py +8 -6
- data/vendor/depot_tools/git_nav_downstream.py +9 -6
- data/vendor/depot_tools/git_new_branch.py +39 -33
- data/vendor/depot_tools/git_number.py +28 -17
- data/vendor/depot_tools/git_rebase_update.py +50 -49
- data/vendor/depot_tools/git_rename_branch.py +2 -2
- data/vendor/depot_tools/git_reparent_branch.py +8 -6
- data/vendor/depot_tools/git_upstream_diff.py +4 -2
- data/vendor/depot_tools/gn.py +6 -4
- data/vendor/depot_tools/goma_auth +12 -0
- data/vendor/depot_tools/goma_auth.bat +8 -0
- data/vendor/depot_tools/goma_ctl +12 -0
- data/vendor/depot_tools/goma_ctl.bat +8 -0
- data/vendor/depot_tools/gsutil.py +5 -2
- data/vendor/depot_tools/gsutil.py.bat +8 -0
- data/vendor/depot_tools/gsutil.vpython +3 -1
- data/vendor/depot_tools/infra/config/OWNERS +2 -2
- data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
- data/vendor/depot_tools/led +1 -1
- data/vendor/depot_tools/lockfile.py +116 -0
- data/vendor/depot_tools/luci-auth +1 -1
- data/vendor/depot_tools/lucicfg +1 -1
- data/vendor/depot_tools/mac_toolchain +1 -1
- data/vendor/depot_tools/man/html/depot_tools.html +1 -1
- data/vendor/depot_tools/man/html/depot_tools_tutorial.html +31 -25
- data/vendor/depot_tools/man/html/git-cl.html +1 -1
- data/vendor/depot_tools/man/html/git-drover.html +18 -18
- data/vendor/depot_tools/man/html/git-footers.html +1 -1
- data/vendor/depot_tools/man/html/git-freeze.html +3 -3
- data/vendor/depot_tools/man/html/git-hyper-blame.html +1 -1
- data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
- data/vendor/depot_tools/man/html/git-map.html +1 -1
- data/vendor/depot_tools/man/html/git-mark-merge-base.html +1 -1
- data/vendor/depot_tools/man/html/git-nav-downstream.html +3 -3
- data/vendor/depot_tools/man/html/git-nav-upstream.html +12 -6
- data/vendor/depot_tools/man/html/git-new-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-rebase-update.html +20 -1
- data/vendor/depot_tools/man/html/git-rename-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-reparent-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-retry.html +1 -1
- data/vendor/depot_tools/man/html/git-squash-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-thaw.html +1 -1
- data/vendor/depot_tools/man/html/git-upstream-diff.html +10 -6
- data/vendor/depot_tools/man/man1/git-cl.1 +4 -4
- data/vendor/depot_tools/man/man1/git-drover.1 +21 -21
- data/vendor/depot_tools/man/man1/git-footers.1 +4 -4
- data/vendor/depot_tools/man/man1/git-freeze.1 +6 -6
- data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
- data/vendor/depot_tools/man/man1/git-map-branches.1 +4 -4
- data/vendor/depot_tools/man/man1/git-map.1 +4 -4
- data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
- data/vendor/depot_tools/man/man1/git-nav-downstream.1 +6 -6
- data/vendor/depot_tools/man/man1/git-nav-upstream.1 +15 -9
- data/vendor/depot_tools/man/man1/git-new-branch.1 +3 -3
- data/vendor/depot_tools/man/man1/git-rebase-update.1 +14 -4
- data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-retry.1 +4 -4
- data/vendor/depot_tools/man/man1/git-squash-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
- data/vendor/depot_tools/man/man1/git-upstream-diff.1 +7 -13
- data/vendor/depot_tools/man/man7/depot_tools.7 +4 -4
- data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +31 -25
- data/vendor/depot_tools/man/src/common_demo_functions.sh +2 -2
- data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +3 -3
- data/vendor/depot_tools/man/src/filter_demo_output.py +4 -2
- data/vendor/depot_tools/man/src/git-new-branch.txt +2 -1
- data/vendor/depot_tools/man/src/git-rebase-update.txt +8 -1
- data/vendor/depot_tools/metrics.README.md +8 -5
- data/vendor/depot_tools/metrics.py +7 -6
- data/vendor/depot_tools/metrics_utils.py +4 -14
- data/vendor/depot_tools/my_activity.py +85 -251
- data/vendor/depot_tools/ninja +1 -0
- data/vendor/depot_tools/ninja-mac +0 -0
- data/vendor/depot_tools/ninjalog_uploader.py +146 -145
- data/vendor/depot_tools/ninjalog_uploader_wrapper.py +69 -60
- data/vendor/depot_tools/owners.py +156 -43
- data/vendor/depot_tools/owners_finder.py +28 -14
- data/vendor/depot_tools/post_build_ninja_summary.py +76 -48
- data/vendor/depot_tools/presubmit_canned_checks.py +293 -106
- data/vendor/depot_tools/presubmit_support.py +527 -333
- data/vendor/depot_tools/prpc +1 -1
- data/vendor/depot_tools/pylint +2 -12
- data/vendor/depot_tools/pylint-1.5 +78 -0
- data/vendor/depot_tools/pylint-1.6 +78 -0
- data/vendor/depot_tools/pylint-1.7 +78 -0
- data/vendor/depot_tools/pylint-1.8 +78 -0
- data/vendor/depot_tools/pylint-1.9 +78 -0
- data/vendor/depot_tools/{depot-tools-auth.bat → pylint.bat} +2 -2
- data/vendor/depot_tools/pylint_main.py +45 -0
- data/vendor/depot_tools/pylintrc +14 -1
- data/vendor/depot_tools/python-bin/python3 +7 -0
- data/vendor/depot_tools/python_runner.sh +13 -8
- data/vendor/depot_tools/rdb +12 -0
- data/vendor/depot_tools/rdb.bat +7 -0
- data/vendor/depot_tools/recipes/OWNERS +0 -1
- data/vendor/depot_tools/recipes/README.recipes.md +218 -151
- data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +17 -16
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +127 -78
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +19 -4
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +18 -3
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +19 -4
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +28 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{with_manifest_name.json → no_cp_checkout_HEAD.json} +25 -15
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +17 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +41 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +24 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +38 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +36 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +0 -5
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +95 -22
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +187 -114
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +2 -4
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +26 -6
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +23 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +23 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +4 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +4 -2
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +3 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +4 -2
- data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +82 -13
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +23 -11
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +3 -4
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +3 -6
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +3 -4
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +7 -7
- data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +4 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +9 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +7 -12
- data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +0 -2
- data/vendor/depot_tools/recipes/recipe_modules/git/api.py +9 -17
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +3 -13
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +4 -12
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +2 -10
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +1 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +1 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +0 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +3 -10
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +3 -11
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +3 -13
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +0 -5
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +7 -13
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +21 -16
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +1 -2
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +23 -8
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +52 -1
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +15 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +32 -8
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +5 -4
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +21 -2
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +20 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +235 -3
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +13 -5
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +5 -1
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +33 -45
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +64 -21
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +64 -21
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +1 -22
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +1 -22
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +5 -32
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +1 -6
- data/vendor/depot_tools/recipes/recipes.py +49 -28
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +11 -6
- data/vendor/depot_tools/repo +698 -540
- data/vendor/depot_tools/roll-dep +14 -1
- data/vendor/depot_tools/roll-dep.bat +10 -1
- data/vendor/depot_tools/roll_dep.py +15 -10
- data/vendor/depot_tools/scm.py +95 -75
- data/vendor/depot_tools/setup_color.py +36 -2
- data/vendor/depot_tools/split_cl.py +44 -32
- data/vendor/depot_tools/subcommand.py +6 -6
- data/vendor/depot_tools/subprocess2.py +38 -322
- data/vendor/depot_tools/third_party/colorama/LICENSE.txt +0 -1
- data/vendor/depot_tools/third_party/colorama/README.chromium +4 -5
- data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
- data/vendor/depot_tools/third_party/colorama/__init__.py +3 -4
- data/vendor/depot_tools/third_party/colorama/ansi.py +82 -30
- data/vendor/depot_tools/third_party/colorama/ansitowin32.py +105 -37
- data/vendor/depot_tools/third_party/colorama/initialise.py +39 -15
- data/vendor/depot_tools/third_party/colorama/win32.py +46 -28
- data/vendor/depot_tools/third_party/colorama/winterm.py +80 -31
- data/vendor/depot_tools/update_depot_tools +18 -8
- data/vendor/depot_tools/update_depot_tools.bat +19 -15
- data/vendor/depot_tools/upload_metrics.py +7 -6
- data/vendor/depot_tools/upload_to_google_storage.py +23 -16
- data/vendor/depot_tools/vpython +4 -4
- data/vendor/depot_tools/vpython.bat +1 -1
- data/vendor/depot_tools/vpython3 +55 -0
- data/vendor/depot_tools/vpython3.bat +12 -0
- data/vendor/depot_tools/watchlists.py +14 -11
- data/vendor/depot_tools/weekly +4 -2
- data/vendor/depot_tools/win32imports.py +61 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +49 -41
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +142 -149
- data/vendor/depot_tools/wtf +5 -3
- data/vendor/depot_tools/yapf +5 -1
- metadata +68 -343
- data/vendor/depot_tools/README.testing +0 -23
- data/vendor/depot_tools/annotated_gclient.py +0 -89
- data/vendor/depot_tools/appengine_mapper.py +0 -23
- data/vendor/depot_tools/bootstrap/win/manifest.txt +0 -20
- data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +0 -20
- data/vendor/depot_tools/bootstrap/win/pylint.new.bat +0 -7
- data/vendor/depot_tools/buildbucket.py +0 -186
- data/vendor/depot_tools/checkout.py +0 -431
- data/vendor/depot_tools/cros +0 -1
- data/vendor/depot_tools/dart_format.py +0 -58
- data/vendor/depot_tools/depot-tools-auth +0 -8
- data/vendor/depot_tools/depot-tools-auth.py +0 -102
- data/vendor/depot_tools/my_reviews.py +0 -396
- data/vendor/depot_tools/patch.py +0 -548
- data/vendor/depot_tools/pylint.py +0 -30
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +0 -239
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +0 -222
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/__init__.py +0 -4
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/api.py +0 -29
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.py +0 -33
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +0 -66
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +0 -11
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +0 -45
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +0 -45
- data/vendor/depot_tools/rietveld.py +0 -779
- data/vendor/depot_tools/roll-dep-svn +0 -8
- data/vendor/depot_tools/roll-dep-svn.bat +0 -12
- data/vendor/depot_tools/roll_dep_svn.py +0 -430
- data/vendor/depot_tools/support/chromite_wrapper +0 -96
- data/vendor/depot_tools/third_party/boto/LICENSE +0 -18
- data/vendor/depot_tools/third_party/boto/README.chromium +0 -43
- data/vendor/depot_tools/third_party/boto/README.rst +0 -163
- data/vendor/depot_tools/third_party/boto/__init__.py +0 -793
- data/vendor/depot_tools/third_party/boto/auth.py +0 -682
- data/vendor/depot_tools/third_party/boto/auth_handler.py +0 -58
- data/vendor/depot_tools/third_party/boto/cacerts/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/cacerts/cacerts.txt +0 -2183
- data/vendor/depot_tools/third_party/boto/compat.py +0 -28
- data/vendor/depot_tools/third_party/boto/connection.py +0 -1081
- data/vendor/depot_tools/third_party/boto/contrib/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/contrib/ymlmessage.py +0 -52
- data/vendor/depot_tools/third_party/boto/core/README +0 -58
- data/vendor/depot_tools/third_party/boto/core/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/core/auth.py +0 -78
- data/vendor/depot_tools/third_party/boto/core/credentials.py +0 -154
- data/vendor/depot_tools/third_party/boto/core/dictresponse.py +0 -178
- data/vendor/depot_tools/third_party/boto/core/service.py +0 -67
- data/vendor/depot_tools/third_party/boto/datapipeline/__init__.py +0 -0
- data/vendor/depot_tools/third_party/boto/datapipeline/exceptions.py +0 -42
- data/vendor/depot_tools/third_party/boto/datapipeline/layer1.py +0 -546
- data/vendor/depot_tools/third_party/boto/ecs/__init__.py +0 -90
- data/vendor/depot_tools/third_party/boto/ecs/item.py +0 -153
- data/vendor/depot_tools/third_party/boto/exception.py +0 -476
- data/vendor/depot_tools/third_party/boto/file/README +0 -49
- data/vendor/depot_tools/third_party/boto/file/__init__.py +0 -28
- data/vendor/depot_tools/third_party/boto/file/bucket.py +0 -112
- data/vendor/depot_tools/third_party/boto/file/connection.py +0 -33
- data/vendor/depot_tools/third_party/boto/file/key.py +0 -199
- data/vendor/depot_tools/third_party/boto/file/simpleresultset.py +0 -30
- data/vendor/depot_tools/third_party/boto/fps/__init__.py +0 -21
- data/vendor/depot_tools/third_party/boto/fps/connection.py +0 -369
- data/vendor/depot_tools/third_party/boto/fps/exception.py +0 -344
- data/vendor/depot_tools/third_party/boto/fps/response.py +0 -175
- data/vendor/depot_tools/third_party/boto/gs/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/gs/acl.py +0 -304
- data/vendor/depot_tools/third_party/boto/gs/bucket.py +0 -870
- data/vendor/depot_tools/third_party/boto/gs/bucketlistresultset.py +0 -64
- data/vendor/depot_tools/third_party/boto/gs/connection.py +0 -103
- data/vendor/depot_tools/third_party/boto/gs/cors.py +0 -169
- data/vendor/depot_tools/third_party/boto/gs/key.py +0 -704
- data/vendor/depot_tools/third_party/boto/gs/resumable_upload_handler.py +0 -659
- data/vendor/depot_tools/third_party/boto/gs/user.py +0 -54
- data/vendor/depot_tools/third_party/boto/handler.py +0 -44
- data/vendor/depot_tools/third_party/boto/https_connection.py +0 -124
- data/vendor/depot_tools/third_party/boto/jsonresponse.py +0 -163
- data/vendor/depot_tools/third_party/boto/manage/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/manage/cmdshell.py +0 -241
- data/vendor/depot_tools/third_party/boto/manage/propget.py +0 -64
- data/vendor/depot_tools/third_party/boto/manage/server.py +0 -556
- data/vendor/depot_tools/third_party/boto/manage/task.py +0 -175
- data/vendor/depot_tools/third_party/boto/manage/test_manage.py +0 -34
- data/vendor/depot_tools/third_party/boto/manage/volume.py +0 -420
- data/vendor/depot_tools/third_party/boto/mashups/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/mashups/interactive.py +0 -97
- data/vendor/depot_tools/third_party/boto/mashups/iobject.py +0 -115
- data/vendor/depot_tools/third_party/boto/mashups/order.py +0 -211
- data/vendor/depot_tools/third_party/boto/mashups/server.py +0 -395
- data/vendor/depot_tools/third_party/boto/plugin.py +0 -90
- data/vendor/depot_tools/third_party/boto/provider.py +0 -337
- data/vendor/depot_tools/third_party/boto/pyami/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/pyami/bootstrap.py +0 -134
- data/vendor/depot_tools/third_party/boto/pyami/config.py +0 -229
- data/vendor/depot_tools/third_party/boto/pyami/copybot.cfg +0 -60
- data/vendor/depot_tools/third_party/boto/pyami/copybot.py +0 -97
- data/vendor/depot_tools/third_party/boto/pyami/helloworld.py +0 -28
- data/vendor/depot_tools/third_party/boto/pyami/launch_ami.py +0 -178
- data/vendor/depot_tools/third_party/boto/pyami/scriptbase.py +0 -44
- data/vendor/depot_tools/third_party/boto/pyami/startup.py +0 -60
- data/vendor/depot_tools/third_party/boto/regioninfo.py +0 -63
- data/vendor/depot_tools/third_party/boto/resultset.py +0 -169
- data/vendor/depot_tools/third_party/boto/roboto/__init__.py +0 -1
- data/vendor/depot_tools/third_party/boto/roboto/awsqueryrequest.py +0 -504
- data/vendor/depot_tools/third_party/boto/roboto/awsqueryservice.py +0 -121
- data/vendor/depot_tools/third_party/boto/roboto/param.py +0 -147
- data/vendor/depot_tools/third_party/boto/s3/__init__.py +0 -84
- data/vendor/depot_tools/third_party/boto/s3/acl.py +0 -164
- data/vendor/depot_tools/third_party/boto/s3/bucket.py +0 -1634
- data/vendor/depot_tools/third_party/boto/s3/bucketlistresultset.py +0 -139
- data/vendor/depot_tools/third_party/boto/s3/bucketlogging.py +0 -83
- data/vendor/depot_tools/third_party/boto/s3/connection.py +0 -540
- data/vendor/depot_tools/third_party/boto/s3/cors.py +0 -210
- data/vendor/depot_tools/third_party/boto/s3/deletemarker.py +0 -55
- data/vendor/depot_tools/third_party/boto/s3/key.py +0 -1712
- data/vendor/depot_tools/third_party/boto/s3/keyfile.py +0 -134
- data/vendor/depot_tools/third_party/boto/s3/lifecycle.py +0 -231
- data/vendor/depot_tools/third_party/boto/s3/multidelete.py +0 -138
- data/vendor/depot_tools/third_party/boto/s3/multipart.py +0 -315
- data/vendor/depot_tools/third_party/boto/s3/prefix.py +0 -42
- data/vendor/depot_tools/third_party/boto/s3/resumable_download_handler.py +0 -339
- data/vendor/depot_tools/third_party/boto/s3/tagging.py +0 -71
- data/vendor/depot_tools/third_party/boto/s3/user.py +0 -49
- data/vendor/depot_tools/third_party/boto/s3/website.py +0 -237
- data/vendor/depot_tools/third_party/boto/services/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/services/bs.py +0 -179
- data/vendor/depot_tools/third_party/boto/services/message.py +0 -58
- data/vendor/depot_tools/third_party/boto/services/result.py +0 -136
- data/vendor/depot_tools/third_party/boto/services/service.py +0 -161
- data/vendor/depot_tools/third_party/boto/services/servicedef.py +0 -91
- data/vendor/depot_tools/third_party/boto/services/sonofmmm.cfg +0 -43
- data/vendor/depot_tools/third_party/boto/services/sonofmmm.py +0 -81
- data/vendor/depot_tools/third_party/boto/services/submit.py +0 -88
- data/vendor/depot_tools/third_party/boto/ses/__init__.py +0 -54
- data/vendor/depot_tools/third_party/boto/ses/connection.py +0 -521
- data/vendor/depot_tools/third_party/boto/ses/exceptions.py +0 -77
- data/vendor/depot_tools/third_party/boto/storage_uri.py +0 -835
- data/vendor/depot_tools/third_party/boto/sts/__init__.py +0 -55
- data/vendor/depot_tools/third_party/boto/sts/connection.py +0 -207
- data/vendor/depot_tools/third_party/boto/sts/credentials.py +0 -215
- data/vendor/depot_tools/third_party/boto/utils.py +0 -927
- data/vendor/depot_tools/third_party/colorama/README.txt +0 -304
- data/vendor/depot_tools/third_party/fancy_urllib/README +0 -22
- data/vendor/depot_tools/third_party/fancy_urllib/__init__.py +0 -460
- data/vendor/depot_tools/third_party/logilab/README.chromium +0 -6
- data/vendor/depot_tools/third_party/logilab/__init__.py +0 -0
- data/vendor/depot_tools/third_party/logilab/astroid/LICENSE.txt +0 -340
- data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +0 -136
- data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +0 -42
- data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +0 -233
- data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +0 -548
- data/vendor/depot_tools/third_party/logilab/astroid/astpeephole.py +0 -86
- data/vendor/depot_tools/third_party/logilab/astroid/bases.py +0 -636
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_builtin_inference.py +0 -336
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +0 -15
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_gi.py +0 -195
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_mechanize.py +0 -18
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_nose.py +0 -82
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +0 -62
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +0 -76
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +0 -44
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_six.py +0 -288
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +0 -65
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +0 -473
- data/vendor/depot_tools/third_party/logilab/astroid/builder.py +0 -263
- data/vendor/depot_tools/third_party/logilab/astroid/context.py +0 -81
- data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +0 -75
- data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +0 -71
- data/vendor/depot_tools/third_party/logilab/astroid/inference.py +0 -359
- data/vendor/depot_tools/third_party/logilab/astroid/manager.py +0 -267
- data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +0 -147
- data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +0 -741
- data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +0 -1053
- data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +0 -87
- data/vendor/depot_tools/third_party/logilab/astroid/objects.py +0 -186
- data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +0 -470
- data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +0 -390
- data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +0 -989
- data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +0 -1716
- data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +0 -201
- data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +0 -96
- data/vendor/depot_tools/third_party/logilab/astroid/util.py +0 -89
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +0 -19
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +0 -20
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +0 -1421
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +0 -9
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +0 -246
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +0 -414
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +0 -13
- data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +0 -24
- data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +0 -19
- data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +0 -2729
- data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +0 -96
- data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +0 -512
- data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +0 -228
- data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +0 -901
- data/vendor/depot_tools/third_party/mock/LICENSE.txt +0 -26
- data/vendor/depot_tools/third_party/mock/README.chromium +0 -24
- data/vendor/depot_tools/third_party/mock/__init__.py +0 -2366
- data/vendor/depot_tools/third_party/oauth2client/LICENSE +0 -202
- data/vendor/depot_tools/third_party/oauth2client/MODIFICATIONS.diff +0 -66
- data/vendor/depot_tools/third_party/oauth2client/README.chromium +0 -15
- data/vendor/depot_tools/third_party/oauth2client/__init__.py +0 -5
- data/vendor/depot_tools/third_party/oauth2client/anyjson.py +0 -32
- data/vendor/depot_tools/third_party/oauth2client/appengine.py +0 -963
- data/vendor/depot_tools/third_party/oauth2client/client.py +0 -1363
- data/vendor/depot_tools/third_party/oauth2client/clientsecrets.py +0 -153
- data/vendor/depot_tools/third_party/oauth2client/crypt.py +0 -377
- data/vendor/depot_tools/third_party/oauth2client/django_orm.py +0 -134
- data/vendor/depot_tools/third_party/oauth2client/file.py +0 -124
- data/vendor/depot_tools/third_party/oauth2client/gce.py +0 -90
- data/vendor/depot_tools/third_party/oauth2client/keyring_storage.py +0 -109
- data/vendor/depot_tools/third_party/oauth2client/locked_file.py +0 -373
- data/vendor/depot_tools/third_party/oauth2client/multistore_file.py +0 -465
- data/vendor/depot_tools/third_party/oauth2client/old_run.py +0 -160
- data/vendor/depot_tools/third_party/oauth2client/tools.py +0 -243
- data/vendor/depot_tools/third_party/oauth2client/util.py +0 -196
- data/vendor/depot_tools/third_party/oauth2client/xsrfutil.py +0 -113
- data/vendor/depot_tools/third_party/protobuf26/README.chromium +0 -23
- data/vendor/depot_tools/third_party/protobuf26/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/compiler/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/compiler/plugin_pb2.py +0 -184
- data/vendor/depot_tools/third_party/protobuf26/descriptor.py +0 -849
- data/vendor/depot_tools/third_party/protobuf26/descriptor_database.py +0 -137
- data/vendor/depot_tools/third_party/protobuf26/descriptor_pb2.py +0 -1522
- data/vendor/depot_tools/third_party/protobuf26/descriptor_pool.py +0 -643
- data/vendor/depot_tools/third_party/protobuf26/internal/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/internal/api_implementation.py +0 -89
- data/vendor/depot_tools/third_party/protobuf26/internal/containers.py +0 -269
- data/vendor/depot_tools/third_party/protobuf26/internal/cpp_message.py +0 -663
- data/vendor/depot_tools/third_party/protobuf26/internal/decoder.py +0 -831
- data/vendor/depot_tools/third_party/protobuf26/internal/encoder.py +0 -788
- data/vendor/depot_tools/third_party/protobuf26/internal/enum_type_wrapper.py +0 -89
- data/vendor/depot_tools/third_party/protobuf26/internal/message_listener.py +0 -78
- data/vendor/depot_tools/third_party/protobuf26/internal/python_message.py +0 -1247
- data/vendor/depot_tools/third_party/protobuf26/internal/type_checkers.py +0 -328
- data/vendor/depot_tools/third_party/protobuf26/internal/wire_format.py +0 -268
- data/vendor/depot_tools/third_party/protobuf26/message.py +0 -284
- data/vendor/depot_tools/third_party/protobuf26/message_factory.py +0 -155
- data/vendor/depot_tools/third_party/protobuf26/reflection.py +0 -205
- data/vendor/depot_tools/third_party/protobuf26/service.py +0 -226
- data/vendor/depot_tools/third_party/protobuf26/service_reflection.py +0 -284
- data/vendor/depot_tools/third_party/protobuf26/symbol_database.py +0 -185
- data/vendor/depot_tools/third_party/protobuf26/text_encoding.py +0 -110
- data/vendor/depot_tools/third_party/protobuf26/text_format.py +0 -873
- data/vendor/depot_tools/third_party/pylint.py +0 -37
- data/vendor/depot_tools/third_party/pylint/LICENSE.txt +0 -340
- data/vendor/depot_tools/third_party/pylint/README.chromium +0 -30
- data/vendor/depot_tools/third_party/pylint/__init__.py +0 -46
- data/vendor/depot_tools/third_party/pylint/__main__.py +0 -3
- data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +0 -80
- data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +0 -123
- data/vendor/depot_tools/third_party/pylint/checkers/async.py +0 -82
- data/vendor/depot_tools/third_party/pylint/checkers/base.py +0 -2010
- data/vendor/depot_tools/third_party/pylint/checkers/classes.py +0 -1120
- data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +0 -348
- data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +0 -369
- data/vendor/depot_tools/third_party/pylint/checkers/format.py +0 -993
- data/vendor/depot_tools/third_party/pylint/checkers/imports.py +0 -654
- data/vendor/depot_tools/third_party/pylint/checkers/logging.py +0 -258
- data/vendor/depot_tools/third_party/pylint/checkers/misc.py +0 -105
- data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +0 -169
- data/vendor/depot_tools/third_party/pylint/checkers/python3.py +0 -591
- data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +0 -129
- data/vendor/depot_tools/third_party/pylint/checkers/similar.py +0 -371
- data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +0 -264
- data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +0 -280
- data/vendor/depot_tools/third_party/pylint/checkers/strings.py +0 -618
- data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +0 -974
- data/vendor/depot_tools/third_party/pylint/checkers/utils.py +0 -741
- data/vendor/depot_tools/third_party/pylint/checkers/variables.py +0 -1191
- data/vendor/depot_tools/third_party/pylint/config.py +0 -820
- data/vendor/depot_tools/third_party/pylint/epylint.py +0 -181
- data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +0 -311
- data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +0 -62
- data/vendor/depot_tools/third_party/pylint/graph.py +0 -179
- data/vendor/depot_tools/third_party/pylint/gui.py +0 -531
- data/vendor/depot_tools/third_party/pylint/interfaces.py +0 -102
- data/vendor/depot_tools/third_party/pylint/lint.py +0 -1381
- data/vendor/depot_tools/third_party/pylint/pyreverse/__init__.py +0 -5
- data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +0 -230
- data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +0 -258
- data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +0 -372
- data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +0 -147
- data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +0 -210
- data/vendor/depot_tools/third_party/pylint/pyreverse/vcgutils.py +0 -198
- data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +0 -198
- data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +0 -149
- data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +0 -27
- data/vendor/depot_tools/third_party/pylint/reporters/html.py +0 -108
- data/vendor/depot_tools/third_party/pylint/reporters/json.py +0 -64
- data/vendor/depot_tools/third_party/pylint/reporters/text.py +0 -237
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +0 -106
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/html_writer.py +0 -93
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/nodes.py +0 -181
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/text_writer.py +0 -99
- data/vendor/depot_tools/third_party/pylint/testutils.py +0 -414
- data/vendor/depot_tools/third_party/pylint/utils.py +0 -1148
- data/vendor/depot_tools/third_party/pymox/COPYING +0 -202
- data/vendor/depot_tools/third_party/pymox/MANIFEST.in +0 -5
- data/vendor/depot_tools/third_party/pymox/README +0 -56
- data/vendor/depot_tools/third_party/pymox/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pymox/mox.py +0 -1643
- data/vendor/depot_tools/third_party/pymox/mox_test.py +0 -1708
- data/vendor/depot_tools/third_party/pymox/mox_test_helper.py +0 -76
- data/vendor/depot_tools/third_party/pymox/setup.py +0 -14
- data/vendor/depot_tools/third_party/pymox/stubout.py +0 -142
- data/vendor/depot_tools/third_party/pymox/stubout_test.py +0 -47
- data/vendor/depot_tools/third_party/pymox/stubout_testee.py +0 -2
- data/vendor/depot_tools/third_party/simplejson/LICENSE.txt +0 -19
- data/vendor/depot_tools/third_party/simplejson/PKG-INFO +0 -29
- data/vendor/depot_tools/third_party/simplejson/__init__.py +0 -437
- data/vendor/depot_tools/third_party/simplejson/decoder.py +0 -421
- data/vendor/depot_tools/third_party/simplejson/encoder.py +0 -501
- data/vendor/depot_tools/third_party/simplejson/ordered_dict.py +0 -119
- data/vendor/depot_tools/third_party/simplejson/scanner.py +0 -77
- data/vendor/depot_tools/third_party/simplejson/tool.py +0 -39
- data/vendor/depot_tools/third_party/upload.py +0 -2565
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
# copyright 2003-2013 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
|
-
"""This module contains some mixins for the different nodes.
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
import warnings
|
|
22
|
-
|
|
23
|
-
from astroid import decorators
|
|
24
|
-
from astroid import exceptions
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class BlockRangeMixIn(object):
|
|
28
|
-
"""override block range """
|
|
29
|
-
|
|
30
|
-
@decorators.cachedproperty
|
|
31
|
-
def blockstart_tolineno(self):
|
|
32
|
-
return self.lineno
|
|
33
|
-
|
|
34
|
-
def _elsed_block_range(self, lineno, orelse, last=None):
|
|
35
|
-
"""handle block line numbers range for try/finally, for, if and while
|
|
36
|
-
statements
|
|
37
|
-
"""
|
|
38
|
-
if lineno == self.fromlineno:
|
|
39
|
-
return lineno, lineno
|
|
40
|
-
if orelse:
|
|
41
|
-
if lineno >= orelse[0].fromlineno:
|
|
42
|
-
return lineno, orelse[-1].tolineno
|
|
43
|
-
return lineno, orelse[0].fromlineno - 1
|
|
44
|
-
return lineno, last or self.tolineno
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
class FilterStmtsMixin(object):
|
|
48
|
-
"""Mixin for statement filtering and assignment type"""
|
|
49
|
-
|
|
50
|
-
def _get_filtered_stmts(self, _, node, _stmts, mystmt):
|
|
51
|
-
"""method used in _filter_stmts to get statemtents and trigger break"""
|
|
52
|
-
if self.statement() is mystmt:
|
|
53
|
-
# original node's statement is the assignment, only keep
|
|
54
|
-
# current node (gen exp, list comp)
|
|
55
|
-
return [node], True
|
|
56
|
-
return _stmts, False
|
|
57
|
-
|
|
58
|
-
def assign_type(self):
|
|
59
|
-
return self
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
class AssignTypeMixin(object):
|
|
70
|
-
|
|
71
|
-
def assign_type(self):
|
|
72
|
-
return self
|
|
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
|
-
|
|
81
|
-
def _get_filtered_stmts(self, lookup_node, node, _stmts, mystmt):
|
|
82
|
-
"""method used in filter_stmts"""
|
|
83
|
-
if self is mystmt:
|
|
84
|
-
return _stmts, True
|
|
85
|
-
if self.statement() is mystmt:
|
|
86
|
-
# original node's statement is the assignment, only keep
|
|
87
|
-
# current node (gen exp, list comp)
|
|
88
|
-
return [node], True
|
|
89
|
-
return _stmts, False
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
class ParentAssignTypeMixin(AssignTypeMixin):
|
|
93
|
-
|
|
94
|
-
def assign_type(self):
|
|
95
|
-
return self.parent.assign_type()
|
|
96
|
-
|
|
97
|
-
def ass_type(self):
|
|
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()
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
class ImportFromMixin(FilterStmtsMixin):
|
|
106
|
-
"""MixIn for From and Import Nodes"""
|
|
107
|
-
|
|
108
|
-
def _infer_name(self, frame, name):
|
|
109
|
-
return name
|
|
110
|
-
|
|
111
|
-
def do_import_module(self, modname=None):
|
|
112
|
-
"""return the ast for a module whose name is <modname> imported by <self>
|
|
113
|
-
"""
|
|
114
|
-
# handle special case where we are on a package node importing a module
|
|
115
|
-
# using the same name as the package, which may end in an infinite loop
|
|
116
|
-
# on relative imports
|
|
117
|
-
# XXX: no more needed ?
|
|
118
|
-
mymodule = self.root()
|
|
119
|
-
level = getattr(self, 'level', None) # Import as no level
|
|
120
|
-
if modname is None:
|
|
121
|
-
modname = self.modname
|
|
122
|
-
# XXX we should investigate deeper if we really want to check
|
|
123
|
-
# importing itself: modname and mymodule.name be relative or absolute
|
|
124
|
-
if mymodule.relative_to_absolute_name(modname, level) == mymodule.name:
|
|
125
|
-
# FIXME: we used to raise InferenceError here, but why ?
|
|
126
|
-
return mymodule
|
|
127
|
-
try:
|
|
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)
|
|
134
|
-
except SyntaxError as ex:
|
|
135
|
-
raise exceptions.InferenceError(str(ex))
|
|
136
|
-
|
|
137
|
-
def real_name(self, asname):
|
|
138
|
-
"""get name from 'as' name"""
|
|
139
|
-
for name, _asname in self.names:
|
|
140
|
-
if name == '*':
|
|
141
|
-
return asname
|
|
142
|
-
if not _asname:
|
|
143
|
-
name = name.split('.', 1)[0]
|
|
144
|
-
_asname = name
|
|
145
|
-
if asname == _asname:
|
|
146
|
-
return name
|
|
147
|
-
raise exceptions.NotFoundError(asname)
|
|
@@ -1,741 +0,0 @@
|
|
|
1
|
-
# copyright 2003-2014 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 under
|
|
7
|
-
# the terms of the GNU Lesser General Public License as published by the Free
|
|
8
|
-
# Software Foundation, either version 2.1 of the License, or (at your option) any
|
|
9
|
-
# later version.
|
|
10
|
-
#
|
|
11
|
-
# astroid is distributed in the hope that it will be useful, but WITHOUT
|
|
12
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
13
|
-
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
|
14
|
-
# 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
|
-
"""Python modules manipulation utility functions.
|
|
19
|
-
|
|
20
|
-
:type PY_SOURCE_EXTS: tuple(str)
|
|
21
|
-
:var PY_SOURCE_EXTS: list of possible python source file extension
|
|
22
|
-
|
|
23
|
-
:type STD_LIB_DIRS: set of str
|
|
24
|
-
:var STD_LIB_DIRS: directories where standard modules are located
|
|
25
|
-
|
|
26
|
-
:type BUILTIN_MODULES: dict
|
|
27
|
-
:var BUILTIN_MODULES: dictionary with builtin module names has key
|
|
28
|
-
"""
|
|
29
|
-
from __future__ import with_statement
|
|
30
|
-
|
|
31
|
-
import imp
|
|
32
|
-
import os
|
|
33
|
-
import platform
|
|
34
|
-
import sys
|
|
35
|
-
from distutils.sysconfig import get_python_lib
|
|
36
|
-
from distutils.errors import DistutilsPlatformError
|
|
37
|
-
import zipimport
|
|
38
|
-
|
|
39
|
-
try:
|
|
40
|
-
import pkg_resources
|
|
41
|
-
except ImportError:
|
|
42
|
-
pkg_resources = None
|
|
43
|
-
|
|
44
|
-
PY_ZIPMODULE = object()
|
|
45
|
-
|
|
46
|
-
if sys.platform.startswith('win'):
|
|
47
|
-
PY_SOURCE_EXTS = ('py', 'pyw')
|
|
48
|
-
PY_COMPILED_EXTS = ('dll', 'pyd')
|
|
49
|
-
else:
|
|
50
|
-
PY_SOURCE_EXTS = ('py',)
|
|
51
|
-
PY_COMPILED_EXTS = ('so',)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
try:
|
|
55
|
-
# The explicit sys.prefix is to work around a patch in virtualenv that
|
|
56
|
-
# replaces the 'real' sys.prefix (i.e. the location of the binary)
|
|
57
|
-
# with the prefix from which the virtualenv was created. This throws
|
|
58
|
-
# off the detection logic for standard library modules, thus the
|
|
59
|
-
# workaround.
|
|
60
|
-
STD_LIB_DIRS = set([
|
|
61
|
-
get_python_lib(standard_lib=True, prefix=sys.prefix),
|
|
62
|
-
# Take care of installations where exec_prefix != prefix.
|
|
63
|
-
get_python_lib(standard_lib=True, prefix=sys.exec_prefix),
|
|
64
|
-
get_python_lib(standard_lib=True)])
|
|
65
|
-
# get_python_lib(standard_lib=1) is not available on pypy, set STD_LIB_DIR to
|
|
66
|
-
# non-valid path, see https://bugs.pypy.org/issue1164
|
|
67
|
-
except DistutilsPlatformError:
|
|
68
|
-
STD_LIB_DIRS = set()
|
|
69
|
-
|
|
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'))
|
|
108
|
-
|
|
109
|
-
EXT_LIB_DIR = get_python_lib()
|
|
110
|
-
IS_JYTHON = platform.python_implementation() == 'Jython'
|
|
111
|
-
BUILTIN_MODULES = dict.fromkeys(sys.builtin_module_names, True)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
class NoSourceFile(Exception):
|
|
115
|
-
"""exception raised when we are not able to get a python
|
|
116
|
-
source file for a precompiled file
|
|
117
|
-
"""
|
|
118
|
-
|
|
119
|
-
def _normalize_path(path):
|
|
120
|
-
return os.path.normcase(os.path.abspath(path))
|
|
121
|
-
|
|
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
|
-
|
|
149
|
-
_NORM_PATH_CACHE = {}
|
|
150
|
-
|
|
151
|
-
def _cache_normalize_path(path):
|
|
152
|
-
"""abspath with caching"""
|
|
153
|
-
# _module_file calls abspath on every path in sys.path every time it's
|
|
154
|
-
# called; on a larger codebase this easily adds up to half a second just
|
|
155
|
-
# assembling path components. This cache alleviates that.
|
|
156
|
-
try:
|
|
157
|
-
return _NORM_PATH_CACHE[path]
|
|
158
|
-
except KeyError:
|
|
159
|
-
if not path: # don't cache result for ''
|
|
160
|
-
return _normalize_path(path)
|
|
161
|
-
result = _NORM_PATH_CACHE[path] = _normalize_path(path)
|
|
162
|
-
return result
|
|
163
|
-
|
|
164
|
-
def load_module_from_name(dotted_name, path=None, use_sys=True):
|
|
165
|
-
"""Load a Python module from its name.
|
|
166
|
-
|
|
167
|
-
:type dotted_name: str
|
|
168
|
-
:param dotted_name: python name of a module or package
|
|
169
|
-
|
|
170
|
-
:type path: list or None
|
|
171
|
-
:param path:
|
|
172
|
-
optional list of path where the module or package should be
|
|
173
|
-
searched (use sys.path if nothing or None is given)
|
|
174
|
-
|
|
175
|
-
:type use_sys: bool
|
|
176
|
-
:param use_sys:
|
|
177
|
-
boolean indicating whether the sys.modules dictionary should be
|
|
178
|
-
used or not
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
:raise ImportError: if the module or package is not found
|
|
182
|
-
|
|
183
|
-
:rtype: module
|
|
184
|
-
:return: the loaded module
|
|
185
|
-
"""
|
|
186
|
-
return load_module_from_modpath(dotted_name.split('.'), path, use_sys)
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
def load_module_from_modpath(parts, path=None, use_sys=1):
|
|
190
|
-
"""Load a python module from its splitted name.
|
|
191
|
-
|
|
192
|
-
:type parts: list(str) or tuple(str)
|
|
193
|
-
:param parts:
|
|
194
|
-
python name of a module or package splitted on '.'
|
|
195
|
-
|
|
196
|
-
:type path: list or None
|
|
197
|
-
:param path:
|
|
198
|
-
optional list of path where the module or package should be
|
|
199
|
-
searched (use sys.path if nothing or None is given)
|
|
200
|
-
|
|
201
|
-
:type use_sys: bool
|
|
202
|
-
:param use_sys:
|
|
203
|
-
boolean indicating whether the sys.modules dictionary should be used or not
|
|
204
|
-
|
|
205
|
-
:raise ImportError: if the module or package is not found
|
|
206
|
-
|
|
207
|
-
:rtype: module
|
|
208
|
-
:return: the loaded module
|
|
209
|
-
"""
|
|
210
|
-
if use_sys:
|
|
211
|
-
try:
|
|
212
|
-
return sys.modules['.'.join(parts)]
|
|
213
|
-
except KeyError:
|
|
214
|
-
pass
|
|
215
|
-
modpath = []
|
|
216
|
-
prevmodule = None
|
|
217
|
-
for part in parts:
|
|
218
|
-
modpath.append(part)
|
|
219
|
-
curname = '.'.join(modpath)
|
|
220
|
-
module = None
|
|
221
|
-
if len(modpath) != len(parts):
|
|
222
|
-
# even with use_sys=False, should try to get outer packages from sys.modules
|
|
223
|
-
module = sys.modules.get(curname)
|
|
224
|
-
elif use_sys:
|
|
225
|
-
# because it may have been indirectly loaded through a parent
|
|
226
|
-
module = sys.modules.get(curname)
|
|
227
|
-
if module is None:
|
|
228
|
-
mp_file, mp_filename, mp_desc = imp.find_module(part, path)
|
|
229
|
-
module = imp.load_module(curname, mp_file, mp_filename, mp_desc)
|
|
230
|
-
# mp_file still needs to be closed.
|
|
231
|
-
if mp_file:
|
|
232
|
-
mp_file.close()
|
|
233
|
-
if prevmodule:
|
|
234
|
-
setattr(prevmodule, part, module)
|
|
235
|
-
_file = getattr(module, '__file__', '')
|
|
236
|
-
prevmodule = module
|
|
237
|
-
if not _file and _is_namespace(curname):
|
|
238
|
-
continue
|
|
239
|
-
if not _file and len(modpath) != len(parts):
|
|
240
|
-
raise ImportError('no module in %s' % '.'.join(parts[len(modpath):]))
|
|
241
|
-
path = [os.path.dirname(_file)]
|
|
242
|
-
return module
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
def load_module_from_file(filepath, path=None, use_sys=True, extrapath=None):
|
|
246
|
-
"""Load a Python module from it's path.
|
|
247
|
-
|
|
248
|
-
:type filepath: str
|
|
249
|
-
:param filepath: path to the python module or package
|
|
250
|
-
|
|
251
|
-
:type path: list or None
|
|
252
|
-
:param path:
|
|
253
|
-
optional list of path where the module or package should be
|
|
254
|
-
searched (use sys.path if nothing or None is given)
|
|
255
|
-
|
|
256
|
-
:type use_sys: bool
|
|
257
|
-
:param use_sys:
|
|
258
|
-
boolean indicating whether the sys.modules dictionary should be
|
|
259
|
-
used or not
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
:raise ImportError: if the module or package is not found
|
|
263
|
-
|
|
264
|
-
:rtype: module
|
|
265
|
-
:return: the loaded module
|
|
266
|
-
"""
|
|
267
|
-
modpath = modpath_from_file(filepath, extrapath)
|
|
268
|
-
return load_module_from_modpath(modpath, path, use_sys)
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
def _check_init(path, mod_path):
|
|
272
|
-
"""check there are some __init__.py all along the way"""
|
|
273
|
-
modpath = []
|
|
274
|
-
for part in mod_path:
|
|
275
|
-
modpath.append(part)
|
|
276
|
-
path = os.path.join(path, part)
|
|
277
|
-
if not _is_namespace('.'.join(modpath)) and not _has_init(path):
|
|
278
|
-
return False
|
|
279
|
-
return True
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
def modpath_from_file(filename, extrapath=None):
|
|
283
|
-
"""given a file path return the corresponding splitted module's name
|
|
284
|
-
(i.e name of a module or package splitted on '.')
|
|
285
|
-
|
|
286
|
-
:type filename: str
|
|
287
|
-
:param filename: file's path for which we want the module's name
|
|
288
|
-
|
|
289
|
-
:type extrapath: dict
|
|
290
|
-
:param extrapath:
|
|
291
|
-
optional extra search path, with path as key and package name for the path
|
|
292
|
-
as value. This is usually useful to handle package splitted in multiple
|
|
293
|
-
directories using __path__ trick.
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
:raise ImportError:
|
|
297
|
-
if the corresponding module's name has not been found
|
|
298
|
-
|
|
299
|
-
:rtype: list(str)
|
|
300
|
-
:return: the corresponding splitted module's name
|
|
301
|
-
"""
|
|
302
|
-
filename = _path_from_filename(filename)
|
|
303
|
-
filename = os.path.abspath(filename)
|
|
304
|
-
base = os.path.splitext(filename)[0]
|
|
305
|
-
if extrapath is not None:
|
|
306
|
-
for path_ in extrapath:
|
|
307
|
-
path = os.path.abspath(path_)
|
|
308
|
-
if path and os.path.normcase(base[:len(path)]) == os.path.normcase(path):
|
|
309
|
-
submodpath = [pkg for pkg in base[len(path):].split(os.sep)
|
|
310
|
-
if pkg]
|
|
311
|
-
if _check_init(path, submodpath[:-1]):
|
|
312
|
-
return extrapath[path_].split('.') + submodpath
|
|
313
|
-
for path in sys.path:
|
|
314
|
-
path = _cache_normalize_path(path)
|
|
315
|
-
if path and os.path.normcase(base).startswith(path):
|
|
316
|
-
modpath = [pkg for pkg in base[len(path):].split(os.sep) if pkg]
|
|
317
|
-
if _check_init(path, modpath[:-1]):
|
|
318
|
-
return modpath
|
|
319
|
-
raise ImportError('Unable to find module for %s in %s' % (
|
|
320
|
-
filename, ', \n'.join(sys.path)))
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
def file_from_modpath(modpath, path=None, context_file=None):
|
|
324
|
-
return file_info_from_modpath(modpath, path, context_file)[0]
|
|
325
|
-
|
|
326
|
-
def file_info_from_modpath(modpath, path=None, context_file=None):
|
|
327
|
-
"""given a mod path (i.e. splitted module / package name), return the
|
|
328
|
-
corresponding file, giving priority to source file over precompiled
|
|
329
|
-
file if it exists
|
|
330
|
-
|
|
331
|
-
:type modpath: list or tuple
|
|
332
|
-
:param modpath:
|
|
333
|
-
splitted module's name (i.e name of a module or package splitted
|
|
334
|
-
on '.')
|
|
335
|
-
(this means explicit relative imports that start with dots have
|
|
336
|
-
empty strings in this list!)
|
|
337
|
-
|
|
338
|
-
:type path: list or None
|
|
339
|
-
:param path:
|
|
340
|
-
optional list of path where the module or package should be
|
|
341
|
-
searched (use sys.path if nothing or None is given)
|
|
342
|
-
|
|
343
|
-
:type context_file: str or None
|
|
344
|
-
:param context_file:
|
|
345
|
-
context file to consider, necessary if the identifier has been
|
|
346
|
-
introduced using a relative import unresolvable in the actual
|
|
347
|
-
context (i.e. modutils)
|
|
348
|
-
|
|
349
|
-
:raise ImportError: if there is no such module in the directory
|
|
350
|
-
|
|
351
|
-
:rtype: (str or None, import type)
|
|
352
|
-
:return:
|
|
353
|
-
the path to the module's file or None if it's an integrated
|
|
354
|
-
builtin module such as 'sys'
|
|
355
|
-
"""
|
|
356
|
-
if context_file is not None:
|
|
357
|
-
context = os.path.dirname(context_file)
|
|
358
|
-
else:
|
|
359
|
-
context = context_file
|
|
360
|
-
if modpath[0] == 'xml':
|
|
361
|
-
# handle _xmlplus
|
|
362
|
-
try:
|
|
363
|
-
return _file_from_modpath(['_xmlplus'] + modpath[1:], path, context)
|
|
364
|
-
except ImportError:
|
|
365
|
-
return _file_from_modpath(modpath, path, context)
|
|
366
|
-
elif modpath == ['os', 'path']:
|
|
367
|
-
# FIXME: currently ignoring search_path...
|
|
368
|
-
return os.path.__file__, imp.PY_SOURCE
|
|
369
|
-
return _file_from_modpath(modpath, path, context)
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
def get_module_part(dotted_name, context_file=None):
|
|
373
|
-
"""given a dotted name return the module part of the name :
|
|
374
|
-
|
|
375
|
-
>>> get_module_part('astroid.as_string.dump')
|
|
376
|
-
'astroid.as_string'
|
|
377
|
-
|
|
378
|
-
:type dotted_name: str
|
|
379
|
-
:param dotted_name: full name of the identifier we are interested in
|
|
380
|
-
|
|
381
|
-
:type context_file: str or None
|
|
382
|
-
:param context_file:
|
|
383
|
-
context file to consider, necessary if the identifier has been
|
|
384
|
-
introduced using a relative import unresolvable in the actual
|
|
385
|
-
context (i.e. modutils)
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
:raise ImportError: if there is no such module in the directory
|
|
389
|
-
|
|
390
|
-
:rtype: str or None
|
|
391
|
-
:return:
|
|
392
|
-
the module part of the name or None if we have not been able at
|
|
393
|
-
all to import the given name
|
|
394
|
-
|
|
395
|
-
XXX: deprecated, since it doesn't handle package precedence over module
|
|
396
|
-
(see #10066)
|
|
397
|
-
"""
|
|
398
|
-
# os.path trick
|
|
399
|
-
if dotted_name.startswith('os.path'):
|
|
400
|
-
return 'os.path'
|
|
401
|
-
parts = dotted_name.split('.')
|
|
402
|
-
if context_file is not None:
|
|
403
|
-
# first check for builtin module which won't be considered latter
|
|
404
|
-
# in that case (path != None)
|
|
405
|
-
if parts[0] in BUILTIN_MODULES:
|
|
406
|
-
if len(parts) > 2:
|
|
407
|
-
raise ImportError(dotted_name)
|
|
408
|
-
return parts[0]
|
|
409
|
-
# don't use += or insert, we want a new list to be created !
|
|
410
|
-
path = None
|
|
411
|
-
starti = 0
|
|
412
|
-
if parts[0] == '':
|
|
413
|
-
assert context_file is not None, \
|
|
414
|
-
'explicit relative import, but no context_file?'
|
|
415
|
-
path = [] # prevent resolving the import non-relatively
|
|
416
|
-
starti = 1
|
|
417
|
-
while parts[starti] == '': # for all further dots: change context
|
|
418
|
-
starti += 1
|
|
419
|
-
context_file = os.path.dirname(context_file)
|
|
420
|
-
for i in range(starti, len(parts)):
|
|
421
|
-
try:
|
|
422
|
-
file_from_modpath(parts[starti:i+1], path=path,
|
|
423
|
-
context_file=context_file)
|
|
424
|
-
except ImportError:
|
|
425
|
-
if not i >= max(1, len(parts) - 2):
|
|
426
|
-
raise
|
|
427
|
-
return '.'.join(parts[:i])
|
|
428
|
-
return dotted_name
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
def get_module_files(src_directory, blacklist):
|
|
432
|
-
"""given a package directory return a list of all available python
|
|
433
|
-
module's files in the package and its subpackages
|
|
434
|
-
|
|
435
|
-
:type src_directory: str
|
|
436
|
-
:param src_directory:
|
|
437
|
-
path of the directory corresponding to the package
|
|
438
|
-
|
|
439
|
-
:type blacklist: list or tuple
|
|
440
|
-
:param blacklist: iterable
|
|
441
|
-
list of files or directories to ignore.
|
|
442
|
-
|
|
443
|
-
:rtype: list
|
|
444
|
-
:return:
|
|
445
|
-
the list of all available python module's files in the package and
|
|
446
|
-
its subpackages
|
|
447
|
-
"""
|
|
448
|
-
files = []
|
|
449
|
-
for directory, dirnames, filenames in os.walk(src_directory):
|
|
450
|
-
_handle_blacklist(blacklist, dirnames, filenames)
|
|
451
|
-
# check for __init__.py
|
|
452
|
-
if not '__init__.py' in filenames:
|
|
453
|
-
dirnames[:] = ()
|
|
454
|
-
continue
|
|
455
|
-
for filename in filenames:
|
|
456
|
-
if _is_python_file(filename):
|
|
457
|
-
src = os.path.join(directory, filename)
|
|
458
|
-
files.append(src)
|
|
459
|
-
return files
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
def get_source_file(filename, include_no_ext=False):
|
|
463
|
-
"""given a python module's file name return the matching source file
|
|
464
|
-
name (the filename will be returned identically if it's a already an
|
|
465
|
-
absolute path to a python source file...)
|
|
466
|
-
|
|
467
|
-
:type filename: str
|
|
468
|
-
:param filename: python module's file name
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
:raise NoSourceFile: if no source file exists on the file system
|
|
472
|
-
|
|
473
|
-
:rtype: str
|
|
474
|
-
:return: the absolute path of the source file if it exists
|
|
475
|
-
"""
|
|
476
|
-
filename = os.path.abspath(_path_from_filename(filename))
|
|
477
|
-
base, orig_ext = os.path.splitext(filename)
|
|
478
|
-
for ext in PY_SOURCE_EXTS:
|
|
479
|
-
source_path = '%s.%s' % (base, ext)
|
|
480
|
-
if os.path.exists(source_path):
|
|
481
|
-
return source_path
|
|
482
|
-
if include_no_ext and not orig_ext and os.path.exists(base):
|
|
483
|
-
return base
|
|
484
|
-
raise NoSourceFile(filename)
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
def is_python_source(filename):
|
|
488
|
-
"""
|
|
489
|
-
rtype: bool
|
|
490
|
-
return: True if the filename is a python source file
|
|
491
|
-
"""
|
|
492
|
-
return os.path.splitext(filename)[1][1:] in PY_SOURCE_EXTS
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
def is_standard_module(modname, std_path=None):
|
|
496
|
-
"""try to guess if a module is a standard python module (by default,
|
|
497
|
-
see `std_path` parameter's description)
|
|
498
|
-
|
|
499
|
-
:type modname: str
|
|
500
|
-
:param modname: name of the module we are interested in
|
|
501
|
-
|
|
502
|
-
:type std_path: list(str) or tuple(str)
|
|
503
|
-
:param std_path: list of path considered has standard
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
:rtype: bool
|
|
507
|
-
:return:
|
|
508
|
-
true if the module:
|
|
509
|
-
- is located on the path listed in one of the directory in `std_path`
|
|
510
|
-
- is a built-in module
|
|
511
|
-
"""
|
|
512
|
-
modname = modname.split('.')[0]
|
|
513
|
-
try:
|
|
514
|
-
filename = file_from_modpath([modname])
|
|
515
|
-
except ImportError:
|
|
516
|
-
# import failed, i'm probably not so wrong by supposing it's
|
|
517
|
-
# not standard...
|
|
518
|
-
return False
|
|
519
|
-
# modules which are not living in a file are considered standard
|
|
520
|
-
# (sys and __builtin__ for instance)
|
|
521
|
-
if filename is None:
|
|
522
|
-
# we assume there are no namespaces in stdlib
|
|
523
|
-
return not _is_namespace(modname)
|
|
524
|
-
filename = _normalize_path(filename)
|
|
525
|
-
if filename.startswith(_cache_normalize_path(EXT_LIB_DIR)):
|
|
526
|
-
return False
|
|
527
|
-
if std_path is None:
|
|
528
|
-
std_path = STD_LIB_DIRS
|
|
529
|
-
for path in std_path:
|
|
530
|
-
if filename.startswith(_cache_normalize_path(path)):
|
|
531
|
-
return True
|
|
532
|
-
return False
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
def is_relative(modname, from_file):
|
|
537
|
-
"""return true if the given module name is relative to the given
|
|
538
|
-
file name
|
|
539
|
-
|
|
540
|
-
:type modname: str
|
|
541
|
-
:param modname: name of the module we are interested in
|
|
542
|
-
|
|
543
|
-
:type from_file: str
|
|
544
|
-
:param from_file:
|
|
545
|
-
path of the module from which modname has been imported
|
|
546
|
-
|
|
547
|
-
:rtype: bool
|
|
548
|
-
:return:
|
|
549
|
-
true if the module has been imported relatively to `from_file`
|
|
550
|
-
"""
|
|
551
|
-
if not os.path.isdir(from_file):
|
|
552
|
-
from_file = os.path.dirname(from_file)
|
|
553
|
-
if from_file in sys.path:
|
|
554
|
-
return False
|
|
555
|
-
try:
|
|
556
|
-
stream, _, _ = imp.find_module(modname.split('.')[0], [from_file])
|
|
557
|
-
|
|
558
|
-
# Close the stream to avoid ResourceWarnings.
|
|
559
|
-
if stream:
|
|
560
|
-
stream.close()
|
|
561
|
-
return True
|
|
562
|
-
except ImportError:
|
|
563
|
-
return False
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
# internal only functions #####################################################
|
|
567
|
-
|
|
568
|
-
def _file_from_modpath(modpath, path=None, context=None):
|
|
569
|
-
"""given a mod path (i.e. splitted module / package name), return the
|
|
570
|
-
corresponding file
|
|
571
|
-
|
|
572
|
-
this function is used internally, see `file_from_modpath`'s
|
|
573
|
-
documentation for more information
|
|
574
|
-
"""
|
|
575
|
-
assert len(modpath) > 0
|
|
576
|
-
if context is not None:
|
|
577
|
-
try:
|
|
578
|
-
mtype, mp_filename = _module_file(modpath, [context])
|
|
579
|
-
except ImportError:
|
|
580
|
-
mtype, mp_filename = _module_file(modpath, path)
|
|
581
|
-
else:
|
|
582
|
-
mtype, mp_filename = _module_file(modpath, path)
|
|
583
|
-
if mtype == imp.PY_COMPILED:
|
|
584
|
-
try:
|
|
585
|
-
return get_source_file(mp_filename), imp.PY_SOURCE
|
|
586
|
-
except NoSourceFile:
|
|
587
|
-
return mp_filename, imp.PY_COMPILED
|
|
588
|
-
elif mtype == imp.C_BUILTIN:
|
|
589
|
-
# integrated builtin module
|
|
590
|
-
return None, imp.C_BUILTIN
|
|
591
|
-
elif mtype == imp.PKG_DIRECTORY:
|
|
592
|
-
mp_filename = _has_init(mp_filename)
|
|
593
|
-
mtype = imp.PY_SOURCE
|
|
594
|
-
return mp_filename, mtype
|
|
595
|
-
|
|
596
|
-
def _search_zip(modpath, pic):
|
|
597
|
-
for filepath, importer in list(pic.items()):
|
|
598
|
-
if importer is not None:
|
|
599
|
-
if importer.find_module(modpath[0]):
|
|
600
|
-
if not importer.find_module(os.path.sep.join(modpath)):
|
|
601
|
-
raise ImportError('No module named %s in %s/%s' % (
|
|
602
|
-
'.'.join(modpath[1:]), filepath, modpath))
|
|
603
|
-
return (PY_ZIPMODULE,
|
|
604
|
-
os.path.abspath(filepath) + os.path.sep + os.path.sep.join(modpath),
|
|
605
|
-
filepath)
|
|
606
|
-
raise ImportError('No module named %s' % '.'.join(modpath))
|
|
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
|
-
|
|
618
|
-
|
|
619
|
-
def _module_file(modpath, path=None):
|
|
620
|
-
"""get a module type / file path
|
|
621
|
-
|
|
622
|
-
:type modpath: list or tuple
|
|
623
|
-
:param modpath:
|
|
624
|
-
splitted module's name (i.e name of a module or package splitted
|
|
625
|
-
on '.'), with leading empty strings for explicit relative import
|
|
626
|
-
|
|
627
|
-
:type path: list or None
|
|
628
|
-
:param path:
|
|
629
|
-
optional list of path where the module or package should be
|
|
630
|
-
searched (use sys.path if nothing or None is given)
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
:rtype: tuple(int, str)
|
|
634
|
-
:return: the module type flag and the file path for a module
|
|
635
|
-
"""
|
|
636
|
-
# egg support compat
|
|
637
|
-
try:
|
|
638
|
-
pic = sys.path_importer_cache
|
|
639
|
-
_path = (path is None and sys.path or path)
|
|
640
|
-
for __path in _path:
|
|
641
|
-
if not __path in pic:
|
|
642
|
-
try:
|
|
643
|
-
pic[__path] = zipimport.zipimporter(__path)
|
|
644
|
-
except zipimport.ZipImportError:
|
|
645
|
-
pic[__path] = None
|
|
646
|
-
checkeggs = True
|
|
647
|
-
except AttributeError:
|
|
648
|
-
checkeggs = False
|
|
649
|
-
# pkg_resources support (aka setuptools namespace packages)
|
|
650
|
-
if _is_namespace(modpath[0]) and modpath[0] in sys.modules:
|
|
651
|
-
# setuptools has added into sys.modules a module object with proper
|
|
652
|
-
# __path__, get back information from there
|
|
653
|
-
module = sys.modules[modpath.pop(0)]
|
|
654
|
-
path = list(module.__path__)
|
|
655
|
-
if not modpath:
|
|
656
|
-
return imp.C_BUILTIN, None
|
|
657
|
-
imported = []
|
|
658
|
-
while modpath:
|
|
659
|
-
modname = modpath[0]
|
|
660
|
-
# take care to changes in find_module implementation wrt builtin modules
|
|
661
|
-
#
|
|
662
|
-
# Python 2.6.6 (r266:84292, Sep 11 2012, 08:34:23)
|
|
663
|
-
# >>> imp.find_module('posix')
|
|
664
|
-
# (None, 'posix', ('', '', 6))
|
|
665
|
-
#
|
|
666
|
-
# Python 3.3.1 (default, Apr 26 2013, 12:08:46)
|
|
667
|
-
# >>> imp.find_module('posix')
|
|
668
|
-
# (None, None, ('', '', 6))
|
|
669
|
-
try:
|
|
670
|
-
stream, mp_filename, mp_desc = imp.find_module(modname, path)
|
|
671
|
-
except ImportError:
|
|
672
|
-
if checkeggs:
|
|
673
|
-
return _search_zip(modpath, pic)[:2]
|
|
674
|
-
raise
|
|
675
|
-
else:
|
|
676
|
-
# Don't forget to close the stream to avoid
|
|
677
|
-
# spurious ResourceWarnings.
|
|
678
|
-
if stream:
|
|
679
|
-
stream.close()
|
|
680
|
-
|
|
681
|
-
if checkeggs and mp_filename:
|
|
682
|
-
fullabspath = [_cache_normalize_path(x) for x in _path]
|
|
683
|
-
try:
|
|
684
|
-
pathindex = fullabspath.index(os.path.dirname(_normalize_path(mp_filename)))
|
|
685
|
-
emtype, emp_filename, zippath = _search_zip(modpath, pic)
|
|
686
|
-
if pathindex > _path.index(zippath):
|
|
687
|
-
# an egg takes priority
|
|
688
|
-
return emtype, emp_filename
|
|
689
|
-
except ValueError:
|
|
690
|
-
# XXX not in _path
|
|
691
|
-
pass
|
|
692
|
-
except ImportError:
|
|
693
|
-
pass
|
|
694
|
-
checkeggs = False
|
|
695
|
-
imported.append(modpath.pop(0))
|
|
696
|
-
mtype = mp_desc[2]
|
|
697
|
-
if modpath:
|
|
698
|
-
if mtype != imp.PKG_DIRECTORY:
|
|
699
|
-
raise ImportError('No module %s in %s' % ('.'.join(modpath),
|
|
700
|
-
'.'.join(imported)))
|
|
701
|
-
# XXX guess if package is using pkgutil.extend_path by looking for
|
|
702
|
-
# those keywords in the first four Kbytes
|
|
703
|
-
try:
|
|
704
|
-
with open(os.path.join(mp_filename, '__init__.py'), 'rb') as stream:
|
|
705
|
-
data = stream.read(4096)
|
|
706
|
-
except IOError:
|
|
707
|
-
path = [mp_filename]
|
|
708
|
-
else:
|
|
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:
|
|
714
|
-
# extend_path is called, search sys.path for module/packages
|
|
715
|
-
# of this name see pkgutil.extend_path documentation
|
|
716
|
-
path = [os.path.join(p, *imported) for p in sys.path
|
|
717
|
-
if os.path.isdir(os.path.join(p, *imported))]
|
|
718
|
-
else:
|
|
719
|
-
path = [mp_filename]
|
|
720
|
-
return mtype, mp_filename
|
|
721
|
-
|
|
722
|
-
def _is_python_file(filename):
|
|
723
|
-
"""return true if the given filename should be considered as a python file
|
|
724
|
-
|
|
725
|
-
.pyc and .pyo are ignored
|
|
726
|
-
"""
|
|
727
|
-
for ext in ('.py', '.so', '.pyd', '.pyw'):
|
|
728
|
-
if filename.endswith(ext):
|
|
729
|
-
return True
|
|
730
|
-
return False
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
def _has_init(directory):
|
|
734
|
-
"""if the given directory has a valid __init__ file, return its path,
|
|
735
|
-
else return None
|
|
736
|
-
"""
|
|
737
|
-
mod_or_pack = os.path.join(directory, '__init__')
|
|
738
|
-
for ext in PY_SOURCE_EXTS + ('pyc', 'pyo'):
|
|
739
|
-
if os.path.exists(mod_or_pack + '.' + ext):
|
|
740
|
-
return mod_or_pack + '.' + ext
|
|
741
|
-
return None
|