libv8 7.3.492.27.1 → 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,96 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
|
|
3
|
-
# Use of this source code is governed by a BSD-style license that can be
|
|
4
|
-
# found in the LICENSE file.
|
|
5
|
-
|
|
6
|
-
"""Wrapper for chromite tools.
|
|
7
|
-
|
|
8
|
-
The script is intend to be symlinked to any number of chromite tools, attempts
|
|
9
|
-
to find the path for chromite, and hands off to the right tool via exec if
|
|
10
|
-
possible.
|
|
11
|
-
|
|
12
|
-
It is intended to used strictly outside of the chroot.
|
|
13
|
-
|
|
14
|
-
If you're looking at a copy and want to know where the original looks at, look
|
|
15
|
-
here:
|
|
16
|
-
http://git.chromium.org/gitweb/?p=chromite.git;a=blob;f=bin/chromite
|
|
17
|
-
|
|
18
|
-
Since this script is _copied_, it should remain small and not use internal libs.
|
|
19
|
-
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
import errno
|
|
23
|
-
import os
|
|
24
|
-
import sys
|
|
25
|
-
|
|
26
|
-
# Due to historical reasons, and the fact depot_tools ToT is used by older
|
|
27
|
-
# factory branches (lacking chromite script cleanups), note we have to
|
|
28
|
-
# fallback to some odd import locations. This is the only reason for the
|
|
29
|
-
# fallback code- any/all new scripts symlinked to this script *must* exist
|
|
30
|
-
# in chromite/bin/ .
|
|
31
|
-
|
|
32
|
-
def _FindChromite(path):
|
|
33
|
-
"""Find the chromite dir in a repo, gclient, or submodule checkout."""
|
|
34
|
-
path = os.path.abspath(path)
|
|
35
|
-
# Depending on the checkout type (whether repo chromeos or gclient chrome)
|
|
36
|
-
# Chromite lives in a different location.
|
|
37
|
-
roots = (
|
|
38
|
-
('.repo', 'chromite/.git'),
|
|
39
|
-
('.gclient', 'src/third_party/chromite/.git'),
|
|
40
|
-
('src/.gitmodules', 'src/third_party/chromite/.git'),
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
while path != '/':
|
|
44
|
-
for root, chromite_git_dir in roots:
|
|
45
|
-
if all(os.path.exists(os.path.join(path, x))
|
|
46
|
-
for x in [root, chromite_git_dir]):
|
|
47
|
-
return os.path.dirname(os.path.join(path, chromite_git_dir))
|
|
48
|
-
path = os.path.dirname(path)
|
|
49
|
-
return None
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def _MissingErrorOut(target):
|
|
53
|
-
sys.stderr.write(
|
|
54
|
-
"""ERROR: Couldn't find the chromite tool %s.
|
|
55
|
-
|
|
56
|
-
Please change to a directory inside your Chromium OS source tree
|
|
57
|
-
and retry. If you need to setup a Chromium OS source tree, see
|
|
58
|
-
http://www.chromium.org/chromium-os/developer-guide
|
|
59
|
-
""" % target)
|
|
60
|
-
return 127
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
def main():
|
|
64
|
-
chromite_dir = _FindChromite(os.getcwd())
|
|
65
|
-
target = os.path.basename(sys.argv[0])
|
|
66
|
-
if chromite_dir is None:
|
|
67
|
-
return _MissingErrorOut(target)
|
|
68
|
-
|
|
69
|
-
path = os.path.join(chromite_dir, 'bin', target)
|
|
70
|
-
try:
|
|
71
|
-
os.execv(path, [path] + sys.argv[1:])
|
|
72
|
-
except EnvironmentError as e:
|
|
73
|
-
if e.errno not in (errno.ENOENT, errno.EPERM):
|
|
74
|
-
raise
|
|
75
|
-
|
|
76
|
-
# Reaching here means it's either a bad target, or we're working against
|
|
77
|
-
# an old (pre 6be2efcf5bb575b03862113eec097c44d8d7f93e) revision of
|
|
78
|
-
# chromite. Fallback to trying to import it; this code works at least as
|
|
79
|
-
# far back as branch 0.11.241.B; likely further.
|
|
80
|
-
|
|
81
|
-
if target == 'cbuildbot':
|
|
82
|
-
target = 'chromite.buildbot.cbuildbot'
|
|
83
|
-
else:
|
|
84
|
-
target = 'chromite.bin.%s' % (target,)
|
|
85
|
-
|
|
86
|
-
# Adjust the path importation so we can import our our target.
|
|
87
|
-
sys.path.insert(0, os.path.dirname(chromite_dir))
|
|
88
|
-
|
|
89
|
-
try:
|
|
90
|
-
module = __import__(target, fromlist=['main'])
|
|
91
|
-
except ImportError:
|
|
92
|
-
return _MissingErrorOut(target)
|
|
93
|
-
return module.main()
|
|
94
|
-
|
|
95
|
-
if __name__ == '__main__':
|
|
96
|
-
sys.exit(main())
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
Permission is hereby granted, free of charge, to any person obtaining a
|
|
2
|
-
copy of this software and associated documentation files (the
|
|
3
|
-
"Software"), to deal in the Software without restriction, including
|
|
4
|
-
without limitation the rights to use, copy, modify, merge, publish, dis-
|
|
5
|
-
tribute, sublicense, and/or sell copies of the Software, and to permit
|
|
6
|
-
persons to whom the Software is furnished to do so, subject to the fol-
|
|
7
|
-
lowing conditions:
|
|
8
|
-
|
|
9
|
-
The above copyright notice and this permission notice shall be included
|
|
10
|
-
in all copies or substantial portions of the Software.
|
|
11
|
-
|
|
12
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
13
|
-
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
|
|
14
|
-
ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
|
15
|
-
SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
16
|
-
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
17
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
18
|
-
IN THE SOFTWARE.
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
Name: boto
|
|
2
|
-
URL: https://github.com/boto/boto
|
|
3
|
-
Version: 2.8.0
|
|
4
|
-
License: MIT
|
|
5
|
-
|
|
6
|
-
Description:
|
|
7
|
-
Python interface to Amazon Web Services.
|
|
8
|
-
|
|
9
|
-
Modifications:
|
|
10
|
-
* Removed boto/docs/
|
|
11
|
-
* Removed boto/tests/
|
|
12
|
-
* Removed boto/boto/setup.py
|
|
13
|
-
* Removed boto/boto/pylintrc
|
|
14
|
-
* Removed boto/boto/ec2
|
|
15
|
-
* Removed boto/boto/beanstalk
|
|
16
|
-
* Removed boto/boto/cloudsearch
|
|
17
|
-
* Removed boto/boto/dynamodb
|
|
18
|
-
* Removed boto/boto/swf
|
|
19
|
-
* Removed boto/boto/rds
|
|
20
|
-
* Removed boto/boto/sdb
|
|
21
|
-
* Removed boto/boto/vpc
|
|
22
|
-
* Removed boto/boto/route53
|
|
23
|
-
* Removed boto/boto/iam
|
|
24
|
-
* Removed boto/boto/sns
|
|
25
|
-
* Removed boto/boto/cloudformations
|
|
26
|
-
* Removed boto/boto/elasticache
|
|
27
|
-
* Removed boto/boto/elastictranscoder
|
|
28
|
-
* Removed boto/boto/mturk
|
|
29
|
-
* Removed boto/boto/cloudfront
|
|
30
|
-
* Removed boto/boto/sqs
|
|
31
|
-
* Removed boto/boto/mws
|
|
32
|
-
* Removed boto/boto/emr
|
|
33
|
-
* Removed boto/boto/pyami/installers
|
|
34
|
-
* Removed boto/bin
|
|
35
|
-
* Removed boto/.gitignore
|
|
36
|
-
* Removed boto/.travis.yml
|
|
37
|
-
* Removed boto/Changelog.rst
|
|
38
|
-
* Removed boto/MANIFEST.in
|
|
39
|
-
* Replaced boto/cacerts/cacerts.txt by file from
|
|
40
|
-
https://pki.google.com/roots.pem
|
|
41
|
-
* Moved boto down to be a first level directory
|
|
42
|
-
|
|
43
|
-
Full license is in the LICENSE file.
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
####
|
|
2
|
-
boto
|
|
3
|
-
####
|
|
4
|
-
boto 2.8.0
|
|
5
|
-
31-Jan-2013
|
|
6
|
-
|
|
7
|
-
.. image:: https://secure.travis-ci.org/boto/boto.png?branch=develop
|
|
8
|
-
:target: https://secure.travis-ci.org/boto/boto
|
|
9
|
-
|
|
10
|
-
************
|
|
11
|
-
Introduction
|
|
12
|
-
************
|
|
13
|
-
|
|
14
|
-
Boto is a Python package that provides interfaces to Amazon Web Services.
|
|
15
|
-
At the moment, boto supports:
|
|
16
|
-
|
|
17
|
-
* Compute
|
|
18
|
-
|
|
19
|
-
* Amazon Elastic Compute Cloud (EC2)
|
|
20
|
-
* Amazon Elastic Map Reduce (EMR)
|
|
21
|
-
* AutoScaling
|
|
22
|
-
|
|
23
|
-
* Content Delivery
|
|
24
|
-
|
|
25
|
-
* Amazon CloudFront
|
|
26
|
-
|
|
27
|
-
* Database
|
|
28
|
-
|
|
29
|
-
* Amazon Relational Data Service (RDS)
|
|
30
|
-
* Amazon DynamoDB
|
|
31
|
-
* Amazon SimpleDB
|
|
32
|
-
* Amazon ElastiCache
|
|
33
|
-
|
|
34
|
-
* Deployment and Management
|
|
35
|
-
|
|
36
|
-
* AWS Elastic Beanstalk
|
|
37
|
-
* AWS CloudFormation
|
|
38
|
-
* AWS Data Pipeline
|
|
39
|
-
|
|
40
|
-
* Identity & Access
|
|
41
|
-
|
|
42
|
-
* AWS Identity and Access Management (IAM)
|
|
43
|
-
|
|
44
|
-
* Application Services
|
|
45
|
-
|
|
46
|
-
* Amazon CloudSearch
|
|
47
|
-
* Amazon Simple Workflow Service (SWF)
|
|
48
|
-
* Amazon Simple Queue Service (SQS)
|
|
49
|
-
* Amazon Simple Notification Server (SNS)
|
|
50
|
-
* Amazon Simple Email Service (SES)
|
|
51
|
-
|
|
52
|
-
* Montoring
|
|
53
|
-
|
|
54
|
-
* Amazon CloudWatch
|
|
55
|
-
|
|
56
|
-
* Networking
|
|
57
|
-
|
|
58
|
-
* Amazon Route53
|
|
59
|
-
* Amazon Virtual Private Cloud (VPC)
|
|
60
|
-
* Elastic Load Balancing (ELB)
|
|
61
|
-
|
|
62
|
-
* Payments and Billing
|
|
63
|
-
|
|
64
|
-
* Amazon Flexible Payment Service (FPS)
|
|
65
|
-
|
|
66
|
-
* Storage
|
|
67
|
-
|
|
68
|
-
* Amazon Simple Storage Service (S3)
|
|
69
|
-
* Amazon Glacier
|
|
70
|
-
* Amazon Elastic Block Store (EBS)
|
|
71
|
-
* Google Cloud Storage
|
|
72
|
-
|
|
73
|
-
* Workforce
|
|
74
|
-
|
|
75
|
-
* Amazon Mechanical Turk
|
|
76
|
-
|
|
77
|
-
* Other
|
|
78
|
-
|
|
79
|
-
* Marketplace Web Services
|
|
80
|
-
|
|
81
|
-
The goal of boto is to support the full breadth and depth of Amazon
|
|
82
|
-
Web Services. In addition, boto provides support for other public
|
|
83
|
-
services such as Google Storage in addition to private cloud systems
|
|
84
|
-
like Eucalyptus, OpenStack and Open Nebula.
|
|
85
|
-
|
|
86
|
-
Boto is developed mainly using Python 2.6.6 and Python 2.7.1 on Mac OSX
|
|
87
|
-
and Ubuntu Maverick. It is known to work on other Linux distributions
|
|
88
|
-
and on Windows. Boto requires no additional libraries or packages
|
|
89
|
-
other than those that are distributed with Python. Efforts are made
|
|
90
|
-
to keep boto compatible with Python 2.5.x but no guarantees are made.
|
|
91
|
-
|
|
92
|
-
************
|
|
93
|
-
Installation
|
|
94
|
-
************
|
|
95
|
-
|
|
96
|
-
Install via `pip`_:
|
|
97
|
-
|
|
98
|
-
::
|
|
99
|
-
|
|
100
|
-
$ pip install boto
|
|
101
|
-
|
|
102
|
-
Install from source:
|
|
103
|
-
|
|
104
|
-
::
|
|
105
|
-
|
|
106
|
-
$ git clone git://github.com/boto/boto.git
|
|
107
|
-
$ cd boto
|
|
108
|
-
$ python setup.py install
|
|
109
|
-
|
|
110
|
-
**********
|
|
111
|
-
ChangeLogs
|
|
112
|
-
**********
|
|
113
|
-
|
|
114
|
-
To see what has changed over time in boto, you can check out the
|
|
115
|
-
`release notes`_ in the wiki.
|
|
116
|
-
|
|
117
|
-
***************************
|
|
118
|
-
Finding Out More About Boto
|
|
119
|
-
***************************
|
|
120
|
-
|
|
121
|
-
The main source code repository for boto can be found on `github.com`_.
|
|
122
|
-
The boto project uses the `gitflow`_ model for branching.
|
|
123
|
-
|
|
124
|
-
`Online documentation`_ is also available. The online documentation includes
|
|
125
|
-
full API documentation as well as Getting Started Guides for many of the boto
|
|
126
|
-
modules.
|
|
127
|
-
|
|
128
|
-
Boto releases can be found on the `Python Cheese Shop`_.
|
|
129
|
-
|
|
130
|
-
Join our IRC channel `#boto` on FreeNode.
|
|
131
|
-
Webchat IRC channel: http://webchat.freenode.net/?channels=boto
|
|
132
|
-
|
|
133
|
-
Join the `boto-users Google Group`_.
|
|
134
|
-
|
|
135
|
-
*************************
|
|
136
|
-
Getting Started with Boto
|
|
137
|
-
*************************
|
|
138
|
-
|
|
139
|
-
Your credentials can be passed into the methods that create
|
|
140
|
-
connections. Alternatively, boto will check for the existance of the
|
|
141
|
-
following environment variables to ascertain your credentials:
|
|
142
|
-
|
|
143
|
-
**AWS_ACCESS_KEY_ID** - Your AWS Access Key ID
|
|
144
|
-
|
|
145
|
-
**AWS_SECRET_ACCESS_KEY** - Your AWS Secret Access Key
|
|
146
|
-
|
|
147
|
-
Credentials and other boto-related settings can also be stored in a
|
|
148
|
-
boto config file. See `this`_ for details.
|
|
149
|
-
|
|
150
|
-
Copyright (c) 2006-2012 Mitch Garnaat <mitch@garnaat.com>
|
|
151
|
-
Copyright (c) 2010-2011, Eucalyptus Systems, Inc.
|
|
152
|
-
Copyright (c) 2012 Amazon.com, Inc. or its affiliates.
|
|
153
|
-
All rights reserved.
|
|
154
|
-
|
|
155
|
-
.. _pip: http://www.pip-installer.org/
|
|
156
|
-
.. _release notes: https://github.com/boto/boto/wiki
|
|
157
|
-
.. _github.com: http://github.com/boto/boto
|
|
158
|
-
.. _Online documentation: http://docs.pythonboto.org
|
|
159
|
-
.. _Python Cheese Shop: http://pypi.python.org/pypi/boto
|
|
160
|
-
.. _this: http://code.google.com/p/boto/wiki/BotoConfig
|
|
161
|
-
.. _gitflow: http://nvie.com/posts/a-successful-git-branching-model/
|
|
162
|
-
.. _neo: https://github.com/boto/boto/tree/neo
|
|
163
|
-
.. _boto-users Google Group: https://groups.google.com/forum/?fromgroups#!forum/boto-users
|
|
@@ -1,793 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2006-2012 Mitch Garnaat http://garnaat.org/
|
|
2
|
-
# Copyright (c) 2010-2011, Eucalyptus Systems, Inc.
|
|
3
|
-
# Copyright (c) 2011, Nexenta Systems Inc.
|
|
4
|
-
# Copyright (c) 2012 Amazon.com, Inc. or its affiliates.
|
|
5
|
-
# Copyright (c) 2010, Google, Inc.
|
|
6
|
-
# All rights reserved.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
9
|
-
# copy of this software and associated documentation files (the
|
|
10
|
-
# "Software"), to deal in the Software without restriction, including
|
|
11
|
-
# without limitation the rights to use, copy, modify, merge, publish, dis-
|
|
12
|
-
# tribute, sublicense, and/or sell copies of the Software, and to permit
|
|
13
|
-
# persons to whom the Software is furnished to do so, subject to the fol-
|
|
14
|
-
# lowing conditions:
|
|
15
|
-
#
|
|
16
|
-
# The above copyright notice and this permission notice shall be included
|
|
17
|
-
# in all copies or substantial portions of the Software.
|
|
18
|
-
#
|
|
19
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
20
|
-
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
|
|
21
|
-
# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
|
22
|
-
# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
23
|
-
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
24
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
25
|
-
# IN THE SOFTWARE.
|
|
26
|
-
#
|
|
27
|
-
from boto.pyami.config import Config, BotoConfigLocations
|
|
28
|
-
from boto.storage_uri import BucketStorageUri, FileStorageUri
|
|
29
|
-
import boto.plugin
|
|
30
|
-
import os
|
|
31
|
-
import platform
|
|
32
|
-
import re
|
|
33
|
-
import sys
|
|
34
|
-
import logging
|
|
35
|
-
import logging.config
|
|
36
|
-
import urlparse
|
|
37
|
-
from boto.exception import InvalidUriError
|
|
38
|
-
|
|
39
|
-
__version__ = '2.8.0-dev'
|
|
40
|
-
Version = __version__ # for backware compatibility
|
|
41
|
-
|
|
42
|
-
UserAgent = 'Boto/%s (%s)' % (__version__, sys.platform)
|
|
43
|
-
config = Config()
|
|
44
|
-
|
|
45
|
-
# Regex to disallow buckets violating charset or not [3..255] chars total.
|
|
46
|
-
BUCKET_NAME_RE = re.compile(r'^[a-z0-9][a-z0-9\._-]{1,253}[a-z0-9]$')
|
|
47
|
-
# Regex to disallow buckets with individual DNS labels longer than 63.
|
|
48
|
-
TOO_LONG_DNS_NAME_COMP = re.compile(r'[-_a-z0-9]{64}')
|
|
49
|
-
GENERATION_RE = re.compile(r'(?P<versionless_uri_str>.+)'
|
|
50
|
-
r'#(?P<generation>[0-9]+)$')
|
|
51
|
-
VERSION_RE = re.compile('(?P<versionless_uri_str>.+)#(?P<version_id>.+)$')
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def init_logging():
|
|
55
|
-
for file in BotoConfigLocations:
|
|
56
|
-
try:
|
|
57
|
-
logging.config.fileConfig(os.path.expanduser(file))
|
|
58
|
-
except:
|
|
59
|
-
pass
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
class NullHandler(logging.Handler):
|
|
63
|
-
def emit(self, record):
|
|
64
|
-
pass
|
|
65
|
-
|
|
66
|
-
log = logging.getLogger('boto')
|
|
67
|
-
perflog = logging.getLogger('boto.perf')
|
|
68
|
-
log.addHandler(NullHandler())
|
|
69
|
-
perflog.addHandler(NullHandler())
|
|
70
|
-
init_logging()
|
|
71
|
-
|
|
72
|
-
# convenience function to set logging to a particular file
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
def set_file_logger(name, filepath, level=logging.INFO, format_string=None):
|
|
76
|
-
global log
|
|
77
|
-
if not format_string:
|
|
78
|
-
format_string = "%(asctime)s %(name)s [%(levelname)s]:%(message)s"
|
|
79
|
-
logger = logging.getLogger(name)
|
|
80
|
-
logger.setLevel(level)
|
|
81
|
-
fh = logging.FileHandler(filepath)
|
|
82
|
-
fh.setLevel(level)
|
|
83
|
-
formatter = logging.Formatter(format_string)
|
|
84
|
-
fh.setFormatter(formatter)
|
|
85
|
-
logger.addHandler(fh)
|
|
86
|
-
log = logger
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
def set_stream_logger(name, level=logging.DEBUG, format_string=None):
|
|
90
|
-
global log
|
|
91
|
-
if not format_string:
|
|
92
|
-
format_string = "%(asctime)s %(name)s [%(levelname)s]:%(message)s"
|
|
93
|
-
logger = logging.getLogger(name)
|
|
94
|
-
logger.setLevel(level)
|
|
95
|
-
fh = logging.StreamHandler()
|
|
96
|
-
fh.setLevel(level)
|
|
97
|
-
formatter = logging.Formatter(format_string)
|
|
98
|
-
fh.setFormatter(formatter)
|
|
99
|
-
logger.addHandler(fh)
|
|
100
|
-
log = logger
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
def connect_sqs(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
104
|
-
"""
|
|
105
|
-
:type aws_access_key_id: string
|
|
106
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
107
|
-
|
|
108
|
-
:type aws_secret_access_key: string
|
|
109
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
110
|
-
|
|
111
|
-
:rtype: :class:`boto.sqs.connection.SQSConnection`
|
|
112
|
-
:return: A connection to Amazon's SQS
|
|
113
|
-
"""
|
|
114
|
-
from boto.sqs.connection import SQSConnection
|
|
115
|
-
return SQSConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
def connect_s3(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
119
|
-
"""
|
|
120
|
-
:type aws_access_key_id: string
|
|
121
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
122
|
-
|
|
123
|
-
:type aws_secret_access_key: string
|
|
124
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
125
|
-
|
|
126
|
-
:rtype: :class:`boto.s3.connection.S3Connection`
|
|
127
|
-
:return: A connection to Amazon's S3
|
|
128
|
-
"""
|
|
129
|
-
from boto.s3.connection import S3Connection
|
|
130
|
-
return S3Connection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
def connect_gs(gs_access_key_id=None, gs_secret_access_key=None, **kwargs):
|
|
134
|
-
"""
|
|
135
|
-
@type gs_access_key_id: string
|
|
136
|
-
@param gs_access_key_id: Your Google Cloud Storage Access Key ID
|
|
137
|
-
|
|
138
|
-
@type gs_secret_access_key: string
|
|
139
|
-
@param gs_secret_access_key: Your Google Cloud Storage Secret Access Key
|
|
140
|
-
|
|
141
|
-
@rtype: L{GSConnection<boto.gs.connection.GSConnection>}
|
|
142
|
-
@return: A connection to Google's Storage service
|
|
143
|
-
"""
|
|
144
|
-
from boto.gs.connection import GSConnection
|
|
145
|
-
return GSConnection(gs_access_key_id, gs_secret_access_key, **kwargs)
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
def connect_ec2(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
149
|
-
"""
|
|
150
|
-
:type aws_access_key_id: string
|
|
151
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
152
|
-
|
|
153
|
-
:type aws_secret_access_key: string
|
|
154
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
155
|
-
|
|
156
|
-
:rtype: :class:`boto.ec2.connection.EC2Connection`
|
|
157
|
-
:return: A connection to Amazon's EC2
|
|
158
|
-
"""
|
|
159
|
-
from boto.ec2.connection import EC2Connection
|
|
160
|
-
return EC2Connection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
def connect_elb(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
164
|
-
"""
|
|
165
|
-
:type aws_access_key_id: string
|
|
166
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
167
|
-
|
|
168
|
-
:type aws_secret_access_key: string
|
|
169
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
170
|
-
|
|
171
|
-
:rtype: :class:`boto.ec2.elb.ELBConnection`
|
|
172
|
-
:return: A connection to Amazon's Load Balancing Service
|
|
173
|
-
"""
|
|
174
|
-
from boto.ec2.elb import ELBConnection
|
|
175
|
-
return ELBConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
def connect_autoscale(aws_access_key_id=None, aws_secret_access_key=None,
|
|
179
|
-
**kwargs):
|
|
180
|
-
"""
|
|
181
|
-
:type aws_access_key_id: string
|
|
182
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
183
|
-
|
|
184
|
-
:type aws_secret_access_key: string
|
|
185
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
186
|
-
|
|
187
|
-
:rtype: :class:`boto.ec2.autoscale.AutoScaleConnection`
|
|
188
|
-
:return: A connection to Amazon's Auto Scaling Service
|
|
189
|
-
"""
|
|
190
|
-
from boto.ec2.autoscale import AutoScaleConnection
|
|
191
|
-
return AutoScaleConnection(aws_access_key_id, aws_secret_access_key,
|
|
192
|
-
**kwargs)
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
def connect_cloudwatch(aws_access_key_id=None, aws_secret_access_key=None,
|
|
196
|
-
**kwargs):
|
|
197
|
-
"""
|
|
198
|
-
:type aws_access_key_id: string
|
|
199
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
200
|
-
|
|
201
|
-
:type aws_secret_access_key: string
|
|
202
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
203
|
-
|
|
204
|
-
:rtype: :class:`boto.ec2.cloudwatch.CloudWatchConnection`
|
|
205
|
-
:return: A connection to Amazon's EC2 Monitoring service
|
|
206
|
-
"""
|
|
207
|
-
from boto.ec2.cloudwatch import CloudWatchConnection
|
|
208
|
-
return CloudWatchConnection(aws_access_key_id, aws_secret_access_key,
|
|
209
|
-
**kwargs)
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
def connect_sdb(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
213
|
-
"""
|
|
214
|
-
:type aws_access_key_id: string
|
|
215
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
216
|
-
|
|
217
|
-
:type aws_secret_access_key: string
|
|
218
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
219
|
-
|
|
220
|
-
:rtype: :class:`boto.sdb.connection.SDBConnection`
|
|
221
|
-
:return: A connection to Amazon's SDB
|
|
222
|
-
"""
|
|
223
|
-
from boto.sdb.connection import SDBConnection
|
|
224
|
-
return SDBConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
def connect_fps(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
228
|
-
"""
|
|
229
|
-
:type aws_access_key_id: string
|
|
230
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
231
|
-
|
|
232
|
-
:type aws_secret_access_key: string
|
|
233
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
234
|
-
|
|
235
|
-
:rtype: :class:`boto.fps.connection.FPSConnection`
|
|
236
|
-
:return: A connection to FPS
|
|
237
|
-
"""
|
|
238
|
-
from boto.fps.connection import FPSConnection
|
|
239
|
-
return FPSConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
def connect_mturk(aws_access_key_id=None, aws_secret_access_key=None,
|
|
243
|
-
**kwargs):
|
|
244
|
-
"""
|
|
245
|
-
:type aws_access_key_id: string
|
|
246
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
247
|
-
|
|
248
|
-
:type aws_secret_access_key: string
|
|
249
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
250
|
-
|
|
251
|
-
:rtype: :class:`boto.mturk.connection.MTurkConnection`
|
|
252
|
-
:return: A connection to MTurk
|
|
253
|
-
"""
|
|
254
|
-
from boto.mturk.connection import MTurkConnection
|
|
255
|
-
return MTurkConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
def connect_cloudfront(aws_access_key_id=None, aws_secret_access_key=None,
|
|
259
|
-
**kwargs):
|
|
260
|
-
"""
|
|
261
|
-
:type aws_access_key_id: string
|
|
262
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
263
|
-
|
|
264
|
-
:type aws_secret_access_key: string
|
|
265
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
266
|
-
|
|
267
|
-
:rtype: :class:`boto.fps.connection.FPSConnection`
|
|
268
|
-
:return: A connection to FPS
|
|
269
|
-
"""
|
|
270
|
-
from boto.cloudfront import CloudFrontConnection
|
|
271
|
-
return CloudFrontConnection(aws_access_key_id, aws_secret_access_key,
|
|
272
|
-
**kwargs)
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
def connect_vpc(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
276
|
-
"""
|
|
277
|
-
:type aws_access_key_id: string
|
|
278
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
279
|
-
|
|
280
|
-
:type aws_secret_access_key: string
|
|
281
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
282
|
-
|
|
283
|
-
:rtype: :class:`boto.vpc.VPCConnection`
|
|
284
|
-
:return: A connection to VPC
|
|
285
|
-
"""
|
|
286
|
-
from boto.vpc import VPCConnection
|
|
287
|
-
return VPCConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
def connect_rds(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
291
|
-
"""
|
|
292
|
-
:type aws_access_key_id: string
|
|
293
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
294
|
-
|
|
295
|
-
:type aws_secret_access_key: string
|
|
296
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
297
|
-
|
|
298
|
-
:rtype: :class:`boto.rds.RDSConnection`
|
|
299
|
-
:return: A connection to RDS
|
|
300
|
-
"""
|
|
301
|
-
from boto.rds import RDSConnection
|
|
302
|
-
return RDSConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
def connect_emr(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
306
|
-
"""
|
|
307
|
-
:type aws_access_key_id: string
|
|
308
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
309
|
-
|
|
310
|
-
:type aws_secret_access_key: string
|
|
311
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
312
|
-
|
|
313
|
-
:rtype: :class:`boto.emr.EmrConnection`
|
|
314
|
-
:return: A connection to Elastic mapreduce
|
|
315
|
-
"""
|
|
316
|
-
from boto.emr import EmrConnection
|
|
317
|
-
return EmrConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
def connect_sns(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
321
|
-
"""
|
|
322
|
-
:type aws_access_key_id: string
|
|
323
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
324
|
-
|
|
325
|
-
:type aws_secret_access_key: string
|
|
326
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
327
|
-
|
|
328
|
-
:rtype: :class:`boto.sns.SNSConnection`
|
|
329
|
-
:return: A connection to Amazon's SNS
|
|
330
|
-
"""
|
|
331
|
-
from boto.sns import SNSConnection
|
|
332
|
-
return SNSConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
def connect_iam(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
336
|
-
"""
|
|
337
|
-
:type aws_access_key_id: string
|
|
338
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
339
|
-
|
|
340
|
-
:type aws_secret_access_key: string
|
|
341
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
342
|
-
|
|
343
|
-
:rtype: :class:`boto.iam.IAMConnection`
|
|
344
|
-
:return: A connection to Amazon's IAM
|
|
345
|
-
"""
|
|
346
|
-
from boto.iam import IAMConnection
|
|
347
|
-
return IAMConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
def connect_route53(aws_access_key_id=None, aws_secret_access_key=None,
|
|
351
|
-
**kwargs):
|
|
352
|
-
"""
|
|
353
|
-
:type aws_access_key_id: string
|
|
354
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
355
|
-
|
|
356
|
-
:type aws_secret_access_key: string
|
|
357
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
358
|
-
|
|
359
|
-
:rtype: :class:`boto.dns.Route53Connection`
|
|
360
|
-
:return: A connection to Amazon's Route53 DNS Service
|
|
361
|
-
"""
|
|
362
|
-
from boto.route53 import Route53Connection
|
|
363
|
-
return Route53Connection(aws_access_key_id, aws_secret_access_key,
|
|
364
|
-
**kwargs)
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
def connect_cloudformation(aws_access_key_id=None, aws_secret_access_key=None,
|
|
368
|
-
**kwargs):
|
|
369
|
-
"""
|
|
370
|
-
:type aws_access_key_id: string
|
|
371
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
372
|
-
|
|
373
|
-
:type aws_secret_access_key: string
|
|
374
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
375
|
-
|
|
376
|
-
:rtype: :class:`boto.cloudformation.CloudFormationConnection`
|
|
377
|
-
:return: A connection to Amazon's CloudFormation Service
|
|
378
|
-
"""
|
|
379
|
-
from boto.cloudformation import CloudFormationConnection
|
|
380
|
-
return CloudFormationConnection(aws_access_key_id, aws_secret_access_key,
|
|
381
|
-
**kwargs)
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
def connect_euca(host=None, aws_access_key_id=None, aws_secret_access_key=None,
|
|
385
|
-
port=8773, path='/services/Eucalyptus', is_secure=False,
|
|
386
|
-
**kwargs):
|
|
387
|
-
"""
|
|
388
|
-
Connect to a Eucalyptus service.
|
|
389
|
-
|
|
390
|
-
:type host: string
|
|
391
|
-
:param host: the host name or ip address of the Eucalyptus server
|
|
392
|
-
|
|
393
|
-
:type aws_access_key_id: string
|
|
394
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
395
|
-
|
|
396
|
-
:type aws_secret_access_key: string
|
|
397
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
398
|
-
|
|
399
|
-
:rtype: :class:`boto.ec2.connection.EC2Connection`
|
|
400
|
-
:return: A connection to Eucalyptus server
|
|
401
|
-
"""
|
|
402
|
-
from boto.ec2 import EC2Connection
|
|
403
|
-
from boto.ec2.regioninfo import RegionInfo
|
|
404
|
-
|
|
405
|
-
# Check for values in boto config, if not supplied as args
|
|
406
|
-
if not aws_access_key_id:
|
|
407
|
-
aws_access_key_id = config.get('Credentials',
|
|
408
|
-
'euca_access_key_id',
|
|
409
|
-
None)
|
|
410
|
-
if not aws_secret_access_key:
|
|
411
|
-
aws_secret_access_key = config.get('Credentials',
|
|
412
|
-
'euca_secret_access_key',
|
|
413
|
-
None)
|
|
414
|
-
if not host:
|
|
415
|
-
host = config.get('Boto', 'eucalyptus_host', None)
|
|
416
|
-
|
|
417
|
-
reg = RegionInfo(name='eucalyptus', endpoint=host)
|
|
418
|
-
return EC2Connection(aws_access_key_id, aws_secret_access_key,
|
|
419
|
-
region=reg, port=port, path=path,
|
|
420
|
-
is_secure=is_secure, **kwargs)
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
def connect_glacier(aws_access_key_id=None, aws_secret_access_key=None,
|
|
424
|
-
**kwargs):
|
|
425
|
-
"""
|
|
426
|
-
:type aws_access_key_id: string
|
|
427
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
428
|
-
|
|
429
|
-
:type aws_secret_access_key: string
|
|
430
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
431
|
-
|
|
432
|
-
:rtype: :class:`boto.glacier.layer2.Layer2`
|
|
433
|
-
:return: A connection to Amazon's Glacier Service
|
|
434
|
-
"""
|
|
435
|
-
from boto.glacier.layer2 import Layer2
|
|
436
|
-
return Layer2(aws_access_key_id, aws_secret_access_key,
|
|
437
|
-
**kwargs)
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
def connect_ec2_endpoint(url, aws_access_key_id=None,
|
|
441
|
-
aws_secret_access_key=None,
|
|
442
|
-
**kwargs):
|
|
443
|
-
"""
|
|
444
|
-
Connect to an EC2 Api endpoint. Additional arguments are passed
|
|
445
|
-
through to connect_ec2.
|
|
446
|
-
|
|
447
|
-
:type url: string
|
|
448
|
-
:param url: A url for the ec2 api endpoint to connect to
|
|
449
|
-
|
|
450
|
-
:type aws_access_key_id: string
|
|
451
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
452
|
-
|
|
453
|
-
:type aws_secret_access_key: string
|
|
454
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
455
|
-
|
|
456
|
-
:rtype: :class:`boto.ec2.connection.EC2Connection`
|
|
457
|
-
:return: A connection to Eucalyptus server
|
|
458
|
-
"""
|
|
459
|
-
from boto.ec2.regioninfo import RegionInfo
|
|
460
|
-
|
|
461
|
-
purl = urlparse.urlparse(url)
|
|
462
|
-
kwargs['port'] = purl.port
|
|
463
|
-
kwargs['host'] = purl.hostname
|
|
464
|
-
kwargs['path'] = purl.path
|
|
465
|
-
if not 'is_secure' in kwargs:
|
|
466
|
-
kwargs['is_secure'] = (purl.scheme == "https")
|
|
467
|
-
|
|
468
|
-
kwargs['region'] = RegionInfo(name=purl.hostname,
|
|
469
|
-
endpoint=purl.hostname)
|
|
470
|
-
kwargs['aws_access_key_id'] = aws_access_key_id
|
|
471
|
-
kwargs['aws_secret_access_key'] = aws_secret_access_key
|
|
472
|
-
|
|
473
|
-
return(connect_ec2(**kwargs))
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
def connect_walrus(host=None, aws_access_key_id=None,
|
|
477
|
-
aws_secret_access_key=None,
|
|
478
|
-
port=8773, path='/services/Walrus', is_secure=False,
|
|
479
|
-
**kwargs):
|
|
480
|
-
"""
|
|
481
|
-
Connect to a Walrus service.
|
|
482
|
-
|
|
483
|
-
:type host: string
|
|
484
|
-
:param host: the host name or ip address of the Walrus server
|
|
485
|
-
|
|
486
|
-
:type aws_access_key_id: string
|
|
487
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
488
|
-
|
|
489
|
-
:type aws_secret_access_key: string
|
|
490
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
491
|
-
|
|
492
|
-
:rtype: :class:`boto.s3.connection.S3Connection`
|
|
493
|
-
:return: A connection to Walrus
|
|
494
|
-
"""
|
|
495
|
-
from boto.s3.connection import S3Connection
|
|
496
|
-
from boto.s3.connection import OrdinaryCallingFormat
|
|
497
|
-
|
|
498
|
-
# Check for values in boto config, if not supplied as args
|
|
499
|
-
if not aws_access_key_id:
|
|
500
|
-
aws_access_key_id = config.get('Credentials',
|
|
501
|
-
'euca_access_key_id',
|
|
502
|
-
None)
|
|
503
|
-
if not aws_secret_access_key:
|
|
504
|
-
aws_secret_access_key = config.get('Credentials',
|
|
505
|
-
'euca_secret_access_key',
|
|
506
|
-
None)
|
|
507
|
-
if not host:
|
|
508
|
-
host = config.get('Boto', 'walrus_host', None)
|
|
509
|
-
|
|
510
|
-
return S3Connection(aws_access_key_id, aws_secret_access_key,
|
|
511
|
-
host=host, port=port, path=path,
|
|
512
|
-
calling_format=OrdinaryCallingFormat(),
|
|
513
|
-
is_secure=is_secure, **kwargs)
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
def connect_ses(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
517
|
-
"""
|
|
518
|
-
:type aws_access_key_id: string
|
|
519
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
520
|
-
|
|
521
|
-
:type aws_secret_access_key: string
|
|
522
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
523
|
-
|
|
524
|
-
:rtype: :class:`boto.ses.SESConnection`
|
|
525
|
-
:return: A connection to Amazon's SES
|
|
526
|
-
"""
|
|
527
|
-
from boto.ses import SESConnection
|
|
528
|
-
return SESConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
def connect_sts(aws_access_key_id=None, aws_secret_access_key=None, **kwargs):
|
|
532
|
-
"""
|
|
533
|
-
:type aws_access_key_id: string
|
|
534
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
535
|
-
|
|
536
|
-
:type aws_secret_access_key: string
|
|
537
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
538
|
-
|
|
539
|
-
:rtype: :class:`boto.sts.STSConnection`
|
|
540
|
-
:return: A connection to Amazon's STS
|
|
541
|
-
"""
|
|
542
|
-
from boto.sts import STSConnection
|
|
543
|
-
return STSConnection(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
def connect_ia(ia_access_key_id=None, ia_secret_access_key=None,
|
|
547
|
-
is_secure=False, **kwargs):
|
|
548
|
-
"""
|
|
549
|
-
Connect to the Internet Archive via their S3-like API.
|
|
550
|
-
|
|
551
|
-
:type ia_access_key_id: string
|
|
552
|
-
:param ia_access_key_id: Your IA Access Key ID. This will also look
|
|
553
|
-
in your boto config file for an entry in the Credentials
|
|
554
|
-
section called "ia_access_key_id"
|
|
555
|
-
|
|
556
|
-
:type ia_secret_access_key: string
|
|
557
|
-
:param ia_secret_access_key: Your IA Secret Access Key. This will also
|
|
558
|
-
look in your boto config file for an entry in the Credentials
|
|
559
|
-
section called "ia_secret_access_key"
|
|
560
|
-
|
|
561
|
-
:rtype: :class:`boto.s3.connection.S3Connection`
|
|
562
|
-
:return: A connection to the Internet Archive
|
|
563
|
-
"""
|
|
564
|
-
from boto.s3.connection import S3Connection
|
|
565
|
-
from boto.s3.connection import OrdinaryCallingFormat
|
|
566
|
-
|
|
567
|
-
access_key = config.get('Credentials', 'ia_access_key_id',
|
|
568
|
-
ia_access_key_id)
|
|
569
|
-
secret_key = config.get('Credentials', 'ia_secret_access_key',
|
|
570
|
-
ia_secret_access_key)
|
|
571
|
-
|
|
572
|
-
return S3Connection(access_key, secret_key,
|
|
573
|
-
host='s3.us.archive.org',
|
|
574
|
-
calling_format=OrdinaryCallingFormat(),
|
|
575
|
-
is_secure=is_secure, **kwargs)
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
def connect_dynamodb(aws_access_key_id=None,
|
|
579
|
-
aws_secret_access_key=None,
|
|
580
|
-
**kwargs):
|
|
581
|
-
"""
|
|
582
|
-
:type aws_access_key_id: string
|
|
583
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
584
|
-
|
|
585
|
-
:type aws_secret_access_key: string
|
|
586
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
587
|
-
|
|
588
|
-
:rtype: :class:`boto.dynamodb.layer2.Layer2`
|
|
589
|
-
:return: A connection to the Layer2 interface for DynamoDB.
|
|
590
|
-
"""
|
|
591
|
-
from boto.dynamodb.layer2 import Layer2
|
|
592
|
-
return Layer2(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
def connect_swf(aws_access_key_id=None,
|
|
596
|
-
aws_secret_access_key=None,
|
|
597
|
-
**kwargs):
|
|
598
|
-
"""
|
|
599
|
-
:type aws_access_key_id: string
|
|
600
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
601
|
-
|
|
602
|
-
:type aws_secret_access_key: string
|
|
603
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
604
|
-
|
|
605
|
-
:rtype: :class:`boto.swf.layer1.Layer1`
|
|
606
|
-
:return: A connection to the Layer1 interface for SWF.
|
|
607
|
-
"""
|
|
608
|
-
from boto.swf.layer1 import Layer1
|
|
609
|
-
return Layer1(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
def connect_cloudsearch(aws_access_key_id=None,
|
|
613
|
-
aws_secret_access_key=None,
|
|
614
|
-
**kwargs):
|
|
615
|
-
"""
|
|
616
|
-
:type aws_access_key_id: string
|
|
617
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
618
|
-
|
|
619
|
-
:type aws_secret_access_key: string
|
|
620
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
621
|
-
|
|
622
|
-
:rtype: :class:`boto.ec2.autoscale.CloudSearchConnection`
|
|
623
|
-
:return: A connection to Amazon's CloudSearch service
|
|
624
|
-
"""
|
|
625
|
-
from boto.cloudsearch.layer2 import Layer2
|
|
626
|
-
return Layer2(aws_access_key_id, aws_secret_access_key,
|
|
627
|
-
**kwargs)
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
def connect_beanstalk(aws_access_key_id=None,
|
|
631
|
-
aws_secret_access_key=None,
|
|
632
|
-
**kwargs):
|
|
633
|
-
"""
|
|
634
|
-
:type aws_access_key_id: string
|
|
635
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
636
|
-
|
|
637
|
-
:type aws_secret_access_key: string
|
|
638
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
639
|
-
|
|
640
|
-
:rtype: :class:`boto.beanstalk.layer1.Layer1`
|
|
641
|
-
:return: A connection to Amazon's Elastic Beanstalk service
|
|
642
|
-
"""
|
|
643
|
-
from boto.beanstalk.layer1 import Layer1
|
|
644
|
-
return Layer1(aws_access_key_id, aws_secret_access_key, **kwargs)
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
def connect_elastictranscoder(aws_access_key_id=None,
|
|
648
|
-
aws_secret_access_key=None,
|
|
649
|
-
**kwargs):
|
|
650
|
-
"""
|
|
651
|
-
:type aws_access_key_id: string
|
|
652
|
-
:param aws_access_key_id: Your AWS Access Key ID
|
|
653
|
-
|
|
654
|
-
:type aws_secret_access_key: string
|
|
655
|
-
:param aws_secret_access_key: Your AWS Secret Access Key
|
|
656
|
-
|
|
657
|
-
:rtype: :class:`boto.ets.layer1.ElasticTranscoderConnection`
|
|
658
|
-
:return: A connection to Amazon's Elastic Transcoder service
|
|
659
|
-
"""
|
|
660
|
-
from boto.elastictranscoder.layer1 import ElasticTranscoderConnection
|
|
661
|
-
return ElasticTranscoderConnection(
|
|
662
|
-
aws_access_key_id=aws_access_key_id,
|
|
663
|
-
aws_secret_access_key=aws_secret_access_key,
|
|
664
|
-
**kwargs)
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
def storage_uri(uri_str, default_scheme='file', debug=0, validate=True,
|
|
668
|
-
bucket_storage_uri_class=BucketStorageUri,
|
|
669
|
-
suppress_consec_slashes=True, is_latest=False):
|
|
670
|
-
"""
|
|
671
|
-
Instantiate a StorageUri from a URI string.
|
|
672
|
-
|
|
673
|
-
:type uri_str: string
|
|
674
|
-
:param uri_str: URI naming bucket + optional object.
|
|
675
|
-
:type default_scheme: string
|
|
676
|
-
:param default_scheme: default scheme for scheme-less URIs.
|
|
677
|
-
:type debug: int
|
|
678
|
-
:param debug: debug level to pass in to boto connection (range 0..2).
|
|
679
|
-
:type validate: bool
|
|
680
|
-
:param validate: whether to check for bucket name validity.
|
|
681
|
-
:type bucket_storage_uri_class: BucketStorageUri interface.
|
|
682
|
-
:param bucket_storage_uri_class: Allows mocking for unit tests.
|
|
683
|
-
:param suppress_consec_slashes: If provided, controls whether
|
|
684
|
-
consecutive slashes will be suppressed in key paths.
|
|
685
|
-
:type is_latest: bool
|
|
686
|
-
:param is_latest: whether this versioned object represents the
|
|
687
|
-
current version.
|
|
688
|
-
|
|
689
|
-
We allow validate to be disabled to allow caller
|
|
690
|
-
to implement bucket-level wildcarding (outside the boto library;
|
|
691
|
-
see gsutil).
|
|
692
|
-
|
|
693
|
-
:rtype: :class:`boto.StorageUri` subclass
|
|
694
|
-
:return: StorageUri subclass for given URI.
|
|
695
|
-
|
|
696
|
-
``uri_str`` must be one of the following formats:
|
|
697
|
-
|
|
698
|
-
* gs://bucket/name
|
|
699
|
-
* gs://bucket/name#ver
|
|
700
|
-
* s3://bucket/name
|
|
701
|
-
* gs://bucket
|
|
702
|
-
* s3://bucket
|
|
703
|
-
* filename (which could be a Unix path like /a/b/c or a Windows path like
|
|
704
|
-
C:\a\b\c)
|
|
705
|
-
|
|
706
|
-
The last example uses the default scheme ('file', unless overridden).
|
|
707
|
-
"""
|
|
708
|
-
version_id = None
|
|
709
|
-
generation = None
|
|
710
|
-
|
|
711
|
-
# Manually parse URI components instead of using urlparse.urlparse because
|
|
712
|
-
# what we're calling URIs don't really fit the standard syntax for URIs
|
|
713
|
-
# (the latter includes an optional host/net location part).
|
|
714
|
-
end_scheme_idx = uri_str.find('://')
|
|
715
|
-
if end_scheme_idx == -1:
|
|
716
|
-
# Check for common error: user specifies gs:bucket instead
|
|
717
|
-
# of gs://bucket. Some URI parsers allow this, but it can cause
|
|
718
|
-
# confusion for callers, so we don't.
|
|
719
|
-
colon_pos = uri_str.find(':')
|
|
720
|
-
if colon_pos != -1:
|
|
721
|
-
# Allow Windows path names including drive letter (C: etc.)
|
|
722
|
-
drive_char = uri_str[0].lower()
|
|
723
|
-
if not (platform.system().lower().startswith('windows')
|
|
724
|
-
and colon_pos == 1
|
|
725
|
-
and drive_char >= 'a' and drive_char <= 'z'):
|
|
726
|
-
raise InvalidUriError('"%s" contains ":" instead of "://"' %
|
|
727
|
-
uri_str)
|
|
728
|
-
scheme = default_scheme.lower()
|
|
729
|
-
path = uri_str
|
|
730
|
-
else:
|
|
731
|
-
scheme = uri_str[0:end_scheme_idx].lower()
|
|
732
|
-
path = uri_str[end_scheme_idx + 3:]
|
|
733
|
-
|
|
734
|
-
if scheme not in ['file', 's3', 'gs']:
|
|
735
|
-
raise InvalidUriError('Unrecognized scheme "%s"' % scheme)
|
|
736
|
-
if scheme == 'file':
|
|
737
|
-
# For file URIs we have no bucket name, and use the complete path
|
|
738
|
-
# (minus 'file://') as the object name.
|
|
739
|
-
is_stream = False
|
|
740
|
-
if path == '-':
|
|
741
|
-
is_stream = True
|
|
742
|
-
return FileStorageUri(path, debug, is_stream)
|
|
743
|
-
else:
|
|
744
|
-
path_parts = path.split('/', 1)
|
|
745
|
-
bucket_name = path_parts[0]
|
|
746
|
-
object_name = ''
|
|
747
|
-
# If validate enabled, ensure the bucket name is valid, to avoid
|
|
748
|
-
# possibly confusing other parts of the code. (For example if we didn't
|
|
749
|
-
# catch bucket names containing ':', when a user tried to connect to
|
|
750
|
-
# the server with that name they might get a confusing error about
|
|
751
|
-
# non-integer port numbers.)
|
|
752
|
-
if (validate and bucket_name and
|
|
753
|
-
(not BUCKET_NAME_RE.match(bucket_name)
|
|
754
|
-
or TOO_LONG_DNS_NAME_COMP.search(bucket_name))):
|
|
755
|
-
raise InvalidUriError('Invalid bucket name in URI "%s"' % uri_str)
|
|
756
|
-
if scheme == 'gs':
|
|
757
|
-
match = GENERATION_RE.search(path)
|
|
758
|
-
if match:
|
|
759
|
-
md = match.groupdict()
|
|
760
|
-
versionless_uri_str = md['versionless_uri_str']
|
|
761
|
-
path_parts = versionless_uri_str.split('/', 1)
|
|
762
|
-
generation = int(md['generation'])
|
|
763
|
-
elif scheme == 's3':
|
|
764
|
-
match = VERSION_RE.search(path)
|
|
765
|
-
if match:
|
|
766
|
-
md = match.groupdict()
|
|
767
|
-
versionless_uri_str = md['versionless_uri_str']
|
|
768
|
-
path_parts = versionless_uri_str.split('/', 1)
|
|
769
|
-
version_id = md['version_id']
|
|
770
|
-
else:
|
|
771
|
-
raise InvalidUriError('Unrecognized scheme "%s"' % scheme)
|
|
772
|
-
if len(path_parts) > 1:
|
|
773
|
-
object_name = path_parts[1]
|
|
774
|
-
return bucket_storage_uri_class(
|
|
775
|
-
scheme, bucket_name, object_name, debug,
|
|
776
|
-
suppress_consec_slashes=suppress_consec_slashes,
|
|
777
|
-
version_id=version_id, generation=generation, is_latest=is_latest)
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
def storage_uri_for_key(key):
|
|
781
|
-
"""Returns a StorageUri for the given key.
|
|
782
|
-
|
|
783
|
-
:type key: :class:`boto.s3.key.Key` or subclass
|
|
784
|
-
:param key: URI naming bucket + optional object.
|
|
785
|
-
"""
|
|
786
|
-
if not isinstance(key, boto.s3.key.Key):
|
|
787
|
-
raise InvalidUriError('Requested key (%s) is not a subclass of '
|
|
788
|
-
'boto.s3.key.Key' % str(type(key)))
|
|
789
|
-
prov_name = key.bucket.connection.provider.get_provider_name()
|
|
790
|
-
uri_str = '%s://%s/%s' % (prov_name, key.bucket.name, key.name)
|
|
791
|
-
return storage_uri(uri_str)
|
|
792
|
-
|
|
793
|
-
boto.plugin.load_plugins(config)
|