@ -3,14 +3,14 @@
## Table of Contents
**[Recipe Modules](#Recipe-Modules)**
* [bot_update ](#recipe_modules-bot_update ) — Recipe module to ensure a checkout is consistent on a bot.
* [bot_update ](#recipe_modules-bot_update ) (Python3 ✅) — Recipe module to ensure a checkout is consistent on a bot.
* [cipd ](#recipe_modules-cipd ) — API for interacting with CIPD.
* [depot_tools ](#recipe_modules-depot_tools ) — The `depot_tools` module provides safe functions to access paths within the depot_tools repo.
* [gclient ](#recipe_modules-gclient )
* [gerrit ](#recipe_modules-gerrit )
* [git ](#recipe_modules-git )
* [git_cl ](#recipe_modules-git_cl )
* [gitiles ](#recipe_modules-gitiles )
* [gitiles ](#recipe_modules-gitiles ) (Python3 ✅)
* [gsutil ](#recipe_modules-gsutil )
* [osx_sdk ](#recipe_modules-osx_sdk ) — The `osx_sdk` module provides safe functions to access a semi-hermetic XCode installation.
* [presubmit ](#recipe_modules-presubmit )
@ -18,9 +18,9 @@
* [windows_sdk ](#recipe_modules-windows_sdk ) — The `windows_sdk` module provides safe functions to access a hermetic Microsoft Visual Studio installation.
**[Recipes](#Recipes)**
* [bot_update:examples/full ](#recipes-bot_update_examples_full )
* [bot_update:tests/do_not_retry_patch_failures_in_cq ](#recipes-bot_update_tests_do_not_retry_patch_failures_in_cq )
* [bot_update:tests/ensure_checkout ](#recipes-bot_update_tests_ensure_checkout )
* [bot_update:examples/full ](#recipes-bot_update_examples_full ) (Python3 ✅)
* [bot_update:tests/do_not_retry_patch_failures_in_cq ](#recipes-bot_update_tests_do_not_retry_patch_failures_in_cq ) (Python3 ✅)
* [bot_update:tests/ensure_checkout ](#recipes-bot_update_tests_ensure_checkout ) (Python3 ✅)
* [cipd:examples/full ](#recipes-cipd_examples_full )
* [cipd:examples/platform_suffix ](#recipes-cipd_examples_platform_suffix )
* [depot_tools:examples/full ](#recipes-depot_tools_examples_full )
@ -32,8 +32,8 @@
* [gerrit:examples/full ](#recipes-gerrit_examples_full )
* [git:examples/full ](#recipes-git_examples_full )
* [git_cl:examples/full ](#recipes-git_cl_examples_full )
* [gitiles:examples/full ](#recipes-gitiles_examples_full )
* [gitiles:tests/parse_repo_url ](#recipes-gitiles_tests_parse_repo_url )
* [gitiles:examples/full ](#recipes-gitiles_examples_full ) (Python3 ✅)
* [gitiles:tests/parse_repo_url ](#recipes-gitiles_tests_parse_repo_url ) (Python3 ✅)
* [gsutil:examples/full ](#recipes-gsutil_examples_full )
* [osx_sdk:examples/full ](#recipes-osx_sdk_examples_full )
* [presubmit:examples/full ](#recipes-presubmit_examples_full )
@ -48,9 +48,9 @@
### *recipe_modules* / [bot\_update ](/recipes/recipe_modules/bot_update )
[DEPS ](/recipes/recipe_modules/bot_update/__init__.py# 1 ): [depot\_tools ](#recipe_modules-depot_tools ), [gclient ](#recipe_modules-gclient ), [gerrit ](#recipe_modules-gerrit ), [gitiles ](#recipe_modules-gitiles ), [tryserver ](#recipe_modules-tryserver ), [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/commit\_position][recipe_engine/recipe_modules/commit_position], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/cq][recipe_engine/recipe_modules/cq], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/milo][recipe_engine/recipe_modules/milo], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/step][recipe_engine/recipe_modules/step]
[DEPS ](/recipes/recipe_modules/bot_update/__init__.py# 3 ): [depot\_tools ](#recipe_modules-depot_tools ), [gclient ](#recipe_modules-gclient ), [gerrit ](#recipe_modules-gerrit ), [gitiles ](#recipe_modules-gitiles ), [tryserver ](#recipe_modules-tryserver ), [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/commit\_position][recipe_engine/recipe_modules/commit_position], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/cq][recipe_engine/recipe_modules/cq], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/milo][recipe_engine/recipe_modules/milo], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/step][recipe_engine/recipe_modules/step]
PYTHON_VERSION_COMPATIBILITY: PY2
PYTHON_VERSION_COMPATIBILITY: PY2+3
Recipe module to ensure a checkout is consistent on a bot.
@ -622,20 +622,20 @@ DEPRECATED. Consider using gerrit.get_change_description instead.
— **def [upload ](/recipes/recipe_modules/git_cl/api.py#42 )(self, message, upload_args=None, \*\*kwargs):**
### *recipe_modules* / [gitiles ](/recipes/recipe_modules/gitiles )
[DEPS ](/recipes/recipe_modules/gitiles/__init__.py# 5 ): [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/url][recipe_engine/recipe_modules/url]
[DEPS ](/recipes/recipe_modules/gitiles/__init__.py# 7 ): [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/url][recipe_engine/recipe_modules/url]
PYTHON_VERSION_COMPATIBILITY: PY2
PYTHON_VERSION_COMPATIBILITY: PY2+3
#### **class [Gitiles ](/recipes/recipe_modules/gitiles/api.py#1 7 )([RecipeApi][recipe_engine/wkt/RecipeApi]):**
#### **class [Gitiles ](/recipes/recipe_modules/gitiles/api.py#1 8 )([RecipeApi][recipe_engine/wkt/RecipeApi]):**
Module for polling a git repository using the Gitiles web interface.
— **def [canonicalize\_repo\_url ](/recipes/recipe_modules/gitiles/api.py#22 2 )(self, repo_url):**
— **def [canonicalize\_repo\_url ](/recipes/recipe_modules/gitiles/api.py#22 7 )(self, repo_url):**
Returns a canonical form of repo_url. If not recognized, returns as is.
— **def [commit\_log ](/recipes/recipe_modules/gitiles/api.py#12 0 )(self, url, commit, step_name=None, attempts=None):**
— **def [commit\_log ](/recipes/recipe_modules/gitiles/api.py#12 1 )(self, url, commit, step_name=None, attempts=None):**
Returns: (dict) the Gitiles commit log structure for a given commit.
@ -645,7 +645,7 @@ Args:
* step_name (str): If not None, override the step name.
* attempts (int): Number of times to try the request before failing.
— **def [download\_archive ](/recipes/recipe_modules/gitiles/api.py#16 2 )(self, repository_url, destination, revision='refs/heads/main'):**
— **def [download\_archive ](/recipes/recipe_modules/gitiles/api.py#16 7 )(self, repository_url, destination, revision='refs/heads/main'):**
Downloads an archive of the repo and extracts it to `destination` .
@ -661,7 +661,7 @@ Args:
* revision (str): The ref or revision in the repo to download. Defaults to
'refs/heads/main'.
— **def [download\_file ](/recipes/recipe_modules/gitiles/api.py#13 6 )(self, repository_url, file_path, branch='main', step_name=None, attempts=None, \*\*kwargs):**
— **def [download\_file ](/recipes/recipe_modules/gitiles/api.py#13 7 )(self, repository_url, file_path, branch='main', step_name=None, attempts=None, \*\*kwargs):**
Downloads raw file content from a Gitiles repository.
@ -675,7 +675,7 @@ Args:
Returns:
Raw file content.
— **def [log ](/recipes/recipe_modules/gitiles/api.py#7 4 )(self, url, ref, limit=0, cursor=None, step_name=None, attempts=None, \*\*kwargs):**
— **def [log ](/recipes/recipe_modules/gitiles/api.py#7 5 )(self, url, ref, limit=0, cursor=None, step_name=None, attempts=None, \*\*kwargs):**
Returns the most recent commits under the given ref with properties.
@ -698,17 +698,17 @@ Returns:
Cursor can be used for subsequent calls to log for paging. If None,
signals that there are no more commits to fetch.
— **def [parse\_repo\_url ](/recipes/recipe_modules/gitiles/api.py#21 1 )(self, repo_url):**
— **def [parse\_repo\_url ](/recipes/recipe_modules/gitiles/api.py#21 6 )(self, repo_url):**
Returns (host, project) pair.
Returns (None, None) if repo_url is not recognized.
— **def [refs ](/recipes/recipe_modules/gitiles/api.py#6 2 )(self, url, step_name='refs', attempts=None):**
— **def [refs ](/recipes/recipe_modules/gitiles/api.py#6 3 )(self, url, step_name='refs', attempts=None):**
Returns a list of refs in the remote repository.
— **def [unparse\_repo\_url ](/recipes/recipe_modules/gitiles/api.py#2 18 )(self, host, project):**
— **def [unparse\_repo\_url ](/recipes/recipe_modules/gitiles/api.py#2 23 )(self, host, project):**
Generates a Gitiles repo URL. See also parse_repo_url.
### *recipe_modules* / [gsutil ](/recipes/recipe_modules/gsutil )
@ -1057,25 +1057,25 @@ Raises:
### *recipes* / [bot\_update:examples/full ](/recipes/recipe_modules/bot_update/examples/full.py )
[DEPS ](/recipes/recipe_modules/bot_update/examples/full.py# 5 ): [bot\_update ](#recipe_modules-bot_update ), [gclient ](#recipe_modules-gclient ), [gerrit ](#recipe_modules-gerrit ), [tryserver ](#recipe_modules-tryserver ), [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime]
[DEPS ](/recipes/recipe_modules/bot_update/examples/full.py# 7 ): [bot\_update ](#recipe_modules-bot_update ), [gclient ](#recipe_modules-gclient ), [gerrit ](#recipe_modules-gerrit ), [tryserver ](#recipe_modules-tryserver ), [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime]
PYTHON_VERSION_COMPATIBILITY: PY2
PYTHON_VERSION_COMPATIBILITY: PY2+3
— **def [RunSteps ](/recipes/recipe_modules/bot_update/examples/full.py#2 3 )(api):**
— **def [RunSteps ](/recipes/recipe_modules/bot_update/examples/full.py#2 5 )(api):**
### *recipes* / [bot\_update:tests/do\_not\_retry\_patch\_failures\_in\_cq ](/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py )
[DEPS ](/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py# 5 ): [bot\_update ](#recipe_modules-bot_update ), [gclient ](#recipe_modules-gclient ), [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/cq][recipe_engine/recipe_modules/cq], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
[DEPS ](/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py# 9 ): [bot\_update ](#recipe_modules-bot_update ), [gclient ](#recipe_modules-gclient ), [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/cq][recipe_engine/recipe_modules/cq], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
PYTHON_VERSION_COMPATIBILITY: PY2
PYTHON_VERSION_COMPATIBILITY: PY2+3
— **def [RunSteps ](/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py#1 7 )(api):**
— **def [RunSteps ](/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py#1 9 )(api):**
### *recipes* / [bot\_update:tests/ensure\_checkout ](/recipes/recipe_modules/bot_update/tests/ensure_checkout.py )
[DEPS ](/recipes/recipe_modules/bot_update/tests/ensure_checkout.py# 7 ): [bot\_update ](#recipe_modules-bot_update ), [gclient ](#recipe_modules-gclient ), [recipe\_engine/json][recipe_engine/recipe_modules/json]
[DEPS ](/recipes/recipe_modules/bot_update/tests/ensure_checkout.py# 9 ): [bot\_update ](#recipe_modules-bot_update ), [gclient ](#recipe_modules-gclient ), [recipe\_engine/json][recipe_engine/recipe_modules/json]
PYTHON_VERSION_COMPATIBILITY: PY2
PYTHON_VERSION_COMPATIBILITY: PY2+3
— **def [RunSteps ](/recipes/recipe_modules/bot_update/tests/ensure_checkout.py#1 4 )(api):**
— **def [RunSteps ](/recipes/recipe_modules/bot_update/tests/ensure_checkout.py#1 6 )(api):**
### *recipes* / [cipd:examples/full ](/recipes/recipe_modules/cipd/examples/full.py )
[DEPS ](/recipes/recipe_modules/cipd/examples/full.py#8 ): [cipd ](#recipe_modules-cipd ), [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
@ -1155,18 +1155,18 @@ PYTHON_VERSION_COMPATIBILITY: PY2
— **def [RunSteps ](/recipes/recipe_modules/git_cl/examples/full.py#17 )(api):**
### *recipes* / [gitiles:examples/full ](/recipes/recipe_modules/gitiles/examples/full.py )
[DEPS ](/recipes/recipe_modules/gitiles/examples/full.py# 5 ): [gitiles ](#recipe_modules-gitiles ), [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
[DEPS ](/recipes/recipe_modules/gitiles/examples/full.py# 7 ): [gitiles ](#recipe_modules-gitiles ), [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
PYTHON_VERSION_COMPATIBILITY: PY2
PYTHON_VERSION_COMPATIBILITY: PY2+3
— **def [RunSteps ](/recipes/recipe_modules/gitiles/examples/full.py#1 4 )(api):**
— **def [RunSteps ](/recipes/recipe_modules/gitiles/examples/full.py#1 6 )(api):**
### *recipes* / [gitiles:tests/parse\_repo\_url ](/recipes/recipe_modules/gitiles/tests/parse_repo_url.py )
[DEPS ](/recipes/recipe_modules/gitiles/tests/parse_repo_url.py# 5 ): [gitiles ](#recipe_modules-gitiles ), [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
[DEPS ](/recipes/recipe_modules/gitiles/tests/parse_repo_url.py# 7 ): [gitiles ](#recipe_modules-gitiles ), [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
PYTHON_VERSION_COMPATIBILITY: PY2
PYTHON_VERSION_COMPATIBILITY: PY2+3
— **def [RunSteps ](/recipes/recipe_modules/gitiles/tests/parse_repo_url.py#1 2 )(api):**
— **def [RunSteps ](/recipes/recipe_modules/gitiles/tests/parse_repo_url.py#1 4 )(api):**
### *recipes* / [gsutil:examples/full ](/recipes/recipe_modules/gsutil/examples/full.py )
[DEPS ](/recipes/recipe_modules/gsutil/examples/full.py#5 ): [gsutil ](#recipe_modules-gsutil ), [recipe\_engine/path][recipe_engine/recipe_modules/path]