You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			848 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Markdown
		
	
			
		
		
	
	
			848 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Markdown
		
	
<!--- AUTOGENERATED BY `./recipes.py test train` -->
 | 
						|
# Package documentation for [depot\_tools](https://chromium.googlesource.com/chromium/tools/depot_tools.git)
 | 
						|
## Table of Contents
 | 
						|
 | 
						|
**[Recipe Modules](#Recipe-Modules)**
 | 
						|
  * [bot_update](#recipe_modules-bot_update) — Recipe module to ensure a checkout is consistent on a bot.
 | 
						|
  * [cipd](#recipe_modules-cipd)
 | 
						|
  * [depot_tools](#recipe_modules-depot_tools)
 | 
						|
  * [gclient](#recipe_modules-gclient)
 | 
						|
  * [gerrit](#recipe_modules-gerrit)
 | 
						|
  * [git](#recipe_modules-git)
 | 
						|
  * [git_cl](#recipe_modules-git_cl)
 | 
						|
  * [gitiles](#recipe_modules-gitiles)
 | 
						|
  * [gsutil](#recipe_modules-gsutil)
 | 
						|
  * [infra_paths](#recipe_modules-infra_paths)
 | 
						|
  * [presubmit](#recipe_modules-presubmit)
 | 
						|
  * [rietveld](#recipe_modules-rietveld)
 | 
						|
  * [tryserver](#recipe_modules-tryserver)
 | 
						|
 | 
						|
**[Recipes](#Recipes)**
 | 
						|
  * [bot_update:examples/full](#recipes-bot_update_examples_full)
 | 
						|
  * [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)
 | 
						|
  * [fetch_end_to_end_test](#recipes-fetch_end_to_end_test)
 | 
						|
  * [gclient:examples/full](#recipes-gclient_examples_full)
 | 
						|
  * [gclient:tests/patch_project](#recipes-gclient_tests_patch_project)
 | 
						|
  * [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)
 | 
						|
  * [gsutil:examples/full](#recipes-gsutil_examples_full)
 | 
						|
  * [infra_paths:examples/full](#recipes-infra_paths_examples_full)
 | 
						|
  * [presubmit:examples/full](#recipes-presubmit_examples_full)
 | 
						|
  * [rietveld:examples/full](#recipes-rietveld_examples_full)
 | 
						|
  * [tryserver:examples/full](#recipes-tryserver_examples_full)
 | 
						|
## Recipe Modules
 | 
						|
 | 
						|
### *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), [rietveld](#recipe_modules-rietveld), [tryserver](#recipe_modules-tryserver), [recipe\_engine/context][recipe_engine/recipe_modules/context], [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/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/source\_manifest][recipe_engine/recipe_modules/source_manifest], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
Recipe module to ensure a checkout is consistent on a bot.
 | 
						|
 | 
						|
#### **class [BotUpdateApi](/recipes/recipe_modules/bot_update/api.py#11)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
— **def [\_\_call\_\_](/recipes/recipe_modules/bot_update/api.py#31)(self, name, cmd, \*\*kwargs):**
 | 
						|
 | 
						|
Wrapper for easy calling of bot_update.
 | 
						|
 | 
						|
— **def [apply\_gerrit\_ref](/recipes/recipe_modules/bot_update/api.py#49)(self, root, gerrit_no_reset=False, gerrit_no_rebase_patch_ref=False, gerrit_repo=None, gerrit_ref=None, step_name='apply_gerrit', \*\*kwargs):**
 | 
						|
 | 
						|
— **def [deapply\_patch](/recipes/recipe_modules/bot_update/api.py#445)(self, bot_update_step):**
 | 
						|
 | 
						|
Deapplies a patch, taking care of DEPS and solution revisions properly.
 | 
						|
    
 | 
						|
 | 
						|
— **def [ensure\_checkout](/recipes/recipe_modules/bot_update/api.py#71)(self, gclient_config=None, suffix=None, patch=True, update_presentation=True, patch_root=None, no_shallow=False, with_branch_heads=False, with_tags=False, refs=None, patch_oauth2=False, oauth2_json=False, use_site_config_creds=True, clobber=False, root_solution_revision=None, rietveld=None, issue=None, patchset=None, gerrit_no_reset=False, gerrit_no_rebase_patch_ref=False, disable_syntax_validation=False, manifest_name=None, \*\*kwargs):**
 | 
						|
 | 
						|
Args:
 | 
						|
  use_site_config_creds: If the oauth2 credentials are in the buildbot
 | 
						|
    site_config. See crbug.com/624212 for more information.
 | 
						|
  gclient_config: The gclient configuration to use when running bot_update.
 | 
						|
    If omitted, the current gclient configuration is used.
 | 
						|
  rietveld: The rietveld server to use. If omitted, will infer from
 | 
						|
    the 'rietveld' property.
 | 
						|
  issue: The rietveld issue number to use. If omitted, will infer from
 | 
						|
    the 'issue' property.
 | 
						|
  patchset: The rietveld issue patchset to use. If omitted, will infer from
 | 
						|
    the 'patchset' property.
 | 
						|
  disable_syntax_validation: (legacy) Disables syntax validation for DEPS.
 | 
						|
    Needed as migration paths for recipes dealing with older revisions,
 | 
						|
    such as bisect.
 | 
						|
  manifest_name: The name of the manifest to upload to LogDog.  This must
 | 
						|
    be unique for the whole build.
 | 
						|
 | 
						|
— **def [get\_project\_revision\_properties](/recipes/recipe_modules/bot_update/api.py#422)(self, project_name, gclient_config=None):**
 | 
						|
 | 
						|
Returns all property names used for storing the checked-out revision of
 | 
						|
a given project.
 | 
						|
 | 
						|
Args:
 | 
						|
  project_name (str): The name of a checked-out project as deps path, e.g.
 | 
						|
      src or src/v8.
 | 
						|
  gclient_config: The gclient configuration to use. If omitted, the current
 | 
						|
      gclient configuration is used.
 | 
						|
 | 
						|
Returns (list of str): All properties that'll hold the checked-out revision
 | 
						|
    of the given project. An empty list if no such properties exist.
 | 
						|
 | 
						|
  **@property**<br>— **def [last\_returned\_properties](/recipes/recipe_modules/bot_update/api.py#43)(self):**
 | 
						|
### *recipe_modules* / [cipd](/recipes/recipe_modules/cipd)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/cipd/__init__.py#1): [infra\_paths](#recipe_modules-infra_paths), [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/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
#### **class [CIPDApi](/recipes/recipe_modules/cipd/api.py#148)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
CIPDApi provides basic support for CIPD.
 | 
						|
 | 
						|
This assumes that `cipd` (or `cipd.exe` or `cipd.bat` on windows) has been
 | 
						|
installed somewhere in $PATH. This will be true if you use depot_tools, or if
 | 
						|
your recipe is running inside of chrome-infrastructure's systems (buildbot,
 | 
						|
swarming).
 | 
						|
 | 
						|
— **def [build](/recipes/recipe_modules/cipd/api.py#221)(self, input_dir, output_package, package_name, install_mode=None):**
 | 
						|
 | 
						|
Builds, but does not upload, a cipd package from a directory.
 | 
						|
 | 
						|
Args:
 | 
						|
  input_dir (Path) - the directory to build the package from.
 | 
						|
  output_package (Path) - the file to write the package to.
 | 
						|
  package_name (str) - the name of the cipd package as it would appear when
 | 
						|
    uploaded to the cipd package server.
 | 
						|
  install_mode (None|'copy'|'symlink') - the mechanism that the cipd client
 | 
						|
    should use when installing this package. If None, defaults to the
 | 
						|
    platform default ('copy' on windows, 'symlink' on everything else).
 | 
						|
 | 
						|
— **def [create\_from\_pkg](/recipes/recipe_modules/cipd/api.py#317)(self, pkg_def, refs=None, tags=None):**
 | 
						|
 | 
						|
Builds and uploads a package based on a PackageDefinition object.
 | 
						|
 | 
						|
This builds and uploads the package in one step.
 | 
						|
 | 
						|
Args:
 | 
						|
  pkg_def (PackageDefinition) - The description of the package we want to
 | 
						|
    create.
 | 
						|
  refs (list(str)) - A list of ref names to set for the package instance.
 | 
						|
  tags (dict(str, str)) - A map of tag name -> value to set for the package
 | 
						|
                          instance.
 | 
						|
 | 
						|
Returns the JSON 'result' section, e.g.: {
 | 
						|
  "package": "infra/tools/cipd/android-amd64",
 | 
						|
  "instance_id": "433bfdf86c0bb82d1eee2d1a0473d3709c25d2c4"
 | 
						|
}
 | 
						|
 | 
						|
— **def [create\_from\_yaml](/recipes/recipe_modules/cipd/api.py#297)(self, pkg_def, refs=None, tags=None):**
 | 
						|
 | 
						|
Builds and uploads a package based on on-disk YAML package definition
 | 
						|
file.
 | 
						|
 | 
						|
This builds and uploads the package in one step.
 | 
						|
 | 
						|
Args:
 | 
						|
  pkg_def (Path) - The path to the yaml file.
 | 
						|
  refs (list(str)) - A list of ref names to set for the package instance.
 | 
						|
  tags (dict(str, str)) - A map of tag name -> value to set for the package
 | 
						|
                          instance.
 | 
						|
 | 
						|
Returns the JSON 'result' section, e.g.: {
 | 
						|
  "package": "infra/tools/cipd/android-amd64",
 | 
						|
  "instance_id": "433bfdf86c0bb82d1eee2d1a0473d3709c25d2c4"
 | 
						|
}
 | 
						|
 | 
						|
  **@property**<br>— **def [default\_bot\_service\_account\_credentials](/recipes/recipe_modules/cipd/api.py#185)(self):**
 | 
						|
 | 
						|
— **def [describe](/recipes/recipe_modules/cipd/api.py#424)(self, package_name, version, test_data_refs=None, test_data_tags=None):**
 | 
						|
 | 
						|
— **def [ensure](/recipes/recipe_modules/cipd/api.py#339)(self, root, packages):**
 | 
						|
 | 
						|
Ensures that packages are installed in a given root dir.
 | 
						|
 | 
						|
packages must be a mapping from package name to its version, where
 | 
						|
  * name must be for right platform (see also ``platform_suffix``),
 | 
						|
  * version could be either instance_id, or ref, or unique tag.
 | 
						|
 | 
						|
If installing a package requires credentials, call
 | 
						|
``set_service_account_credentials`` before calling this function.
 | 
						|
 | 
						|
  **@property**<br>— **def [executable](/recipes/recipe_modules/cipd/api.py#181)(self):**
 | 
						|
 | 
						|
— **def [initialize](/recipes/recipe_modules/cipd/api.py#175)(self):**
 | 
						|
 | 
						|
— **def [platform\_suffix](/recipes/recipe_modules/cipd/api.py#194)(self, name=None, arch=None, bits=None):**
 | 
						|
 | 
						|
Use to get full package name that is platform indepdent.
 | 
						|
 | 
						|
Example:
 | 
						|
  >>> 'my/package/%s' % api.cipd.platform_suffix()
 | 
						|
  'my/package/linux-amd64'
 | 
						|
 | 
						|
Optional platform bits and architecture may be supplied to generate CIPD
 | 
						|
suffixes for other platforms. If any are omitted, the current platform
 | 
						|
parameters will be used.
 | 
						|
 | 
						|
— **def [register](/recipes/recipe_modules/cipd/api.py#249)(self, package_name, package_path, refs=None, tags=None):**
 | 
						|
 | 
						|
— **def [search](/recipes/recipe_modules/cipd/api.py#406)(self, package_name, tag):**
 | 
						|
 | 
						|
— **def [set\_ref](/recipes/recipe_modules/cipd/api.py#386)(self, package_name, version, refs):**
 | 
						|
 | 
						|
— **def [set\_service\_account\_credentials](/recipes/recipe_modules/cipd/api.py#178)(self, path):**
 | 
						|
 | 
						|
— **def [set\_tag](/recipes/recipe_modules/cipd/api.py#366)(self, package_name, version, tags):**
 | 
						|
### *recipe_modules* / [depot\_tools](/recipes/recipe_modules/depot_tools)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/depot_tools/__init__.py#1): [recipe\_engine/platform][recipe_engine/recipe_modules/platform]
 | 
						|
 | 
						|
#### **class [DepotToolsApi](/recipes/recipe_modules/depot_tools/api.py#7)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
  **@property**<br>— **def [cros\_path](/recipes/recipe_modules/depot_tools/api.py#21)(self):**
 | 
						|
 | 
						|
  **@property**<br>— **def [download\_from\_google\_storage\_path](/recipes/recipe_modules/depot_tools/api.py#8)(self):**
 | 
						|
 | 
						|
  **@property**<br>— **def [gn\_py\_path](/recipes/recipe_modules/depot_tools/api.py#25)(self):**
 | 
						|
 | 
						|
  **@property**<br>— **def [gsutil\_py\_path](/recipes/recipe_modules/depot_tools/api.py#31)(self):**
 | 
						|
 | 
						|
  **@property**<br>— **def [ninja\_path](/recipes/recipe_modules/depot_tools/api.py#35)(self):**
 | 
						|
 | 
						|
  **@property**<br>— **def [presubmit\_support\_py\_path](/recipes/recipe_modules/depot_tools/api.py#40)(self):**
 | 
						|
 | 
						|
  **@property**<br>— **def [root](/recipes/recipe_modules/depot_tools/api.py#16)(self):**
 | 
						|
 | 
						|
Returns (Path): The "depot_tools" root directory.
 | 
						|
 | 
						|
  **@property**<br>— **def [upload\_to\_google\_storage\_path](/recipes/recipe_modules/depot_tools/api.py#12)(self):**
 | 
						|
### *recipe_modules* / [gclient](/recipes/recipe_modules/gclient)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/gclient/__init__.py#1): [infra\_paths](#recipe_modules-infra_paths), [tryserver](#recipe_modules-tryserver), [recipe\_engine/context][recipe_engine/recipe_modules/context], [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/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
#### **class [GclientApi](/recipes/recipe_modules/gclient/api.py#65)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
— **def [\_\_call\_\_](/recipes/recipe_modules/gclient/api.py#75)(self, name, cmd, infra_step=True, \*\*kwargs):**
 | 
						|
 | 
						|
Wrapper for easy calling of gclient steps.
 | 
						|
 | 
						|
— **def [break\_locks](/recipes/recipe_modules/gclient/api.py#288)(self):**
 | 
						|
 | 
						|
Remove all index.lock files. If a previous run of git crashed, bot was
 | 
						|
reset, etc... we might end up with leftover index.lock files.
 | 
						|
 | 
						|
— **def [calculate\_patch\_root](/recipes/recipe_modules/gclient/api.py#310)(self, patch_project, gclient_config=None, patch_repo=None):**
 | 
						|
 | 
						|
Returns path where a patch should be applied to based patch_project.
 | 
						|
 | 
						|
Maps the patch's repo to a path of directories relative to checkout's root,
 | 
						|
which describe where to place the patch. If no mapping is found for the
 | 
						|
repo url, falls back to trying to find a mapping for the old-style
 | 
						|
"patch_project".
 | 
						|
 | 
						|
For now, considers only first solution (c.solutions[0]), but in theory can
 | 
						|
be extended to all of them.
 | 
						|
 | 
						|
See patch_projects and repo_path_map solution config property.
 | 
						|
 | 
						|
Returns:
 | 
						|
  Relative path, including solution's root.
 | 
						|
  If patch_project is not given or not recognized, it'll be just first
 | 
						|
  solution root.
 | 
						|
 | 
						|
— **def [checkout](/recipes/recipe_modules/gclient/api.py#235)(self, gclient_config=None, revert=RevertOnTryserver, inject_parent_got_revision=True, extra_sync_flags=None, \*\*kwargs):**
 | 
						|
 | 
						|
Return a step generator function for gclient checkouts.
 | 
						|
 | 
						|
  **@staticmethod**<br>— **def [config\_to\_pythonish](/recipes/recipe_modules/gclient/api.py#125)(cfg):**
 | 
						|
 | 
						|
— **def [get\_config\_defaults](/recipes/recipe_modules/gclient/api.py#119)(self):**
 | 
						|
 | 
						|
  **@staticmethod**<br>— **def [got\_revision\_reverse\_mapping](/recipes/recipe_modules/gclient/api.py#130)(cfg):**
 | 
						|
 | 
						|
Returns the merged got_revision_reverse_mapping.
 | 
						|
 | 
						|
Returns (dict): A mapping from property name -> project name. It merges the
 | 
						|
    values of the deprecated got_revision_mapping and the new
 | 
						|
    got_revision_reverse_mapping.
 | 
						|
 | 
						|
— **def [inject\_parent\_got\_revision](/recipes/recipe_modules/gclient/api.py#210)(self, gclient_config=None, override=False):**
 | 
						|
 | 
						|
Match gclient config to build revisions obtained from build_properties.
 | 
						|
 | 
						|
Args:
 | 
						|
  gclient_config (gclient config object) - The config to manipulate. A value
 | 
						|
    of None manipulates the module's built-in config (self.c).
 | 
						|
  override (bool) - If True, will forcibly set revision and custom_vars
 | 
						|
    even if the config already contains values for them.
 | 
						|
 | 
						|
  **@property**<br>— **def [is\_blink\_mode](/recipes/recipe_modules/gclient/api.py#275)(self):**
 | 
						|
 | 
						|
Indicates wether the caller is to use the Blink config rather than the
 | 
						|
Chromium config. This may happen for one of two reasons:
 | 
						|
1. The builder is configured to always use TOT Blink. (factory property
 | 
						|
   top_of_tree_blink=True)
 | 
						|
2. A try job comes in that applies to the Blink tree. (patch_project is
 | 
						|
   blink)
 | 
						|
 | 
						|
— **def [resolve\_revision](/recipes/recipe_modules/gclient/api.py#147)(self, revision):**
 | 
						|
 | 
						|
— **def [runhooks](/recipes/recipe_modules/gclient/api.py#269)(self, args=None, name='runhooks', \*\*kwargs):**
 | 
						|
 | 
						|
— **def [set\_patch\_project\_revision](/recipes/recipe_modules/gclient/api.py#342)(self, patch_project, gclient_config=None):**
 | 
						|
 | 
						|
Updates config revision corresponding to patch_project.
 | 
						|
 | 
						|
Useful for bot_update only, as this is the only consumer of gclient's config
 | 
						|
revision map. This doesn't overwrite the revision if it was already set.
 | 
						|
 | 
						|
  **@spec_alias.deleter**<br>— **def [spec\_alias](/recipes/recipe_modules/gclient/api.py#115)(self):**
 | 
						|
 | 
						|
— **def [sync](/recipes/recipe_modules/gclient/api.py#152)(self, cfg, extra_sync_flags=None, \*\*kwargs):**
 | 
						|
 | 
						|
  **@use_mirror.setter**<br>— **def [use\_mirror](/recipes/recipe_modules/gclient/api.py#102)(self, val):**
 | 
						|
### *recipe_modules* / [gerrit](/recipes/recipe_modules/gerrit)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/gerrit/__init__.py#1): [recipe\_engine/context][recipe_engine/recipe_modules/context], [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]
 | 
						|
 | 
						|
#### **class [GerritApi](/recipes/recipe_modules/gerrit/api.py#7)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
Module for interact with gerrit endpoints
 | 
						|
 | 
						|
— **def [\_\_call\_\_](/recipes/recipe_modules/gerrit/api.py#10)(self, name, cmd, infra_step=True, \*\*kwargs):**
 | 
						|
 | 
						|
Wrapper for easy calling of gerrit_utils steps.
 | 
						|
 | 
						|
— **def [create\_gerrit\_branch](/recipes/recipe_modules/gerrit/api.py#27)(self, host, project, branch, commit, \*\*kwargs):**
 | 
						|
 | 
						|
Create a new branch from given project and commit
 | 
						|
 | 
						|
Returns:
 | 
						|
  the ref of the branch created
 | 
						|
 | 
						|
— **def [get\_change\_description](/recipes/recipe_modules/gerrit/api.py#93)(self, host, change, patchset):**
 | 
						|
 | 
						|
Get the description for a given CL and patchset.
 | 
						|
 | 
						|
Args:
 | 
						|
  host: Gerrit host to query.
 | 
						|
  change: The change number.
 | 
						|
  patchset: The patchset number.
 | 
						|
 | 
						|
Returns:
 | 
						|
  The description corresponding to given CL and patchset.
 | 
						|
 | 
						|
— **def [get\_change\_destination\_branch](/recipes/recipe_modules/gerrit/api.py#68)(self, host, change, \*\*kwargs):**
 | 
						|
 | 
						|
Get the upstream branch for a given CL.
 | 
						|
 | 
						|
Args:
 | 
						|
  host: Gerrit host to query.
 | 
						|
  change: The change number.
 | 
						|
 | 
						|
Returns:
 | 
						|
  the name of the branch
 | 
						|
 | 
						|
— **def [get\_changes](/recipes/recipe_modules/gerrit/api.py#122)(self, host, query_params, start=None, limit=None, o_params=None, \*\*kwargs):**
 | 
						|
 | 
						|
Query changes for the given host.
 | 
						|
 | 
						|
Args:
 | 
						|
  host: Gerrit host to query.
 | 
						|
  query_params: Query parameters as list of (key, value) tuples to form a
 | 
						|
      query as documented here:
 | 
						|
      https://gerrit-review.googlesource.com/Documentation/user-search.html#search-operators
 | 
						|
  start: How many changes to skip (starting with the most recent).
 | 
						|
  limit: Maximum number of results to return.
 | 
						|
  o_params: A list of additional output specifiers, as documented here:
 | 
						|
      https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#list-changes
 | 
						|
Returns:
 | 
						|
  A list of change dicts as documented here:
 | 
						|
      https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#list-changes
 | 
						|
 | 
						|
— **def [get\_gerrit\_branch](/recipes/recipe_modules/gerrit/api.py#49)(self, host, project, branch, \*\*kwargs):**
 | 
						|
 | 
						|
Get a branch from given project and commit
 | 
						|
 | 
						|
Returns:
 | 
						|
  the revision of the branch
 | 
						|
### *recipe_modules* / [git](/recipes/recipe_modules/git)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/git/__init__.py#1): [infra\_paths](#recipe_modules-infra_paths), [recipe\_engine/context][recipe_engine/recipe_modules/context], [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/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
#### **class [GitApi](/recipes/recipe_modules/git/api.py#10)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
— **def [\_\_call\_\_](/recipes/recipe_modules/git/api.py#13)(self, \*args, \*\*kwargs):**
 | 
						|
 | 
						|
Return a git command step.
 | 
						|
 | 
						|
— **def [bundle\_create](/recipes/recipe_modules/git/api.py#370)(self, bundle_path, rev_list_args=None, \*\*kwargs):**
 | 
						|
 | 
						|
Run 'git bundle create' on a Git repository.
 | 
						|
 | 
						|
Args:
 | 
						|
  bundle_path (Path): The path of the output bundle.
 | 
						|
  refs (list): The list of refs to include in the bundle. If None, all
 | 
						|
      refs in the Git checkout will be bundled.
 | 
						|
  kwargs: Forwarded to '__call__'.
 | 
						|
 | 
						|
— **def [cat\_file\_at\_commit](/recipes/recipe_modules/git/api.py#38)(self, file_path, commit_hash, remote_name=None, \*\*kwargs):**
 | 
						|
 | 
						|
Outputs the contents of a file at a given revision.
 | 
						|
 | 
						|
— **def [checkout](/recipes/recipe_modules/git/api.py#110)(self, url, ref=None, dir_path=None, recursive=False, submodules=True, submodule_update_force=False, keep_paths=None, step_suffix=None, curl_trace_file=None, can_fail_build=True, set_got_revision=False, remote_name=None, display_fetch_size=None, file_name=None, submodule_update_recursive=True, use_git_cache=False, progress=True):**
 | 
						|
 | 
						|
Performs a full git checkout and returns sha1 of checked out revision.
 | 
						|
 | 
						|
Args:
 | 
						|
  url (str): url of remote repo to use as upstream
 | 
						|
  ref (str): ref to fetch and check out
 | 
						|
  dir_path (Path): optional directory to clone into
 | 
						|
  recursive (bool): whether to recursively fetch submodules or not
 | 
						|
  submodules (bool): whether to sync and update submodules or not
 | 
						|
  submodule_update_force (bool): whether to update submodules with --force
 | 
						|
  keep_paths (iterable of strings): paths to ignore during git-clean;
 | 
						|
      paths are gitignore-style patterns relative to checkout_path.
 | 
						|
  step_suffix (str): suffix to add to a each step name
 | 
						|
  curl_trace_file (Path): if not None, dump GIT_CURL_VERBOSE=1 trace to that
 | 
						|
      file. Useful for debugging git issue reproducible only on bots. It has
 | 
						|
      a side effect of all stderr output of 'git fetch' going to that file.
 | 
						|
  can_fail_build (bool): if False, ignore errors during fetch or checkout.
 | 
						|
  set_got_revision (bool): if True, resolves HEAD and sets got_revision
 | 
						|
      property.
 | 
						|
  remote_name (str): name of the git remote to use
 | 
						|
  display_fetch_size (bool): if True, run `git count-objects` before and
 | 
						|
    after fetch and display delta. Adds two more steps. Defaults to False.
 | 
						|
  file_name (str): optional path to a single file to checkout.
 | 
						|
  submodule_update_recursive (bool): if True, updates submodules
 | 
						|
      recursively.
 | 
						|
  use_git_cache (bool): if True, git cache will be used for this checkout.
 | 
						|
      WARNING, this is EXPERIMENTAL!!! This wasn't tested with:
 | 
						|
       * submodules
 | 
						|
       * since origin url is modified
 | 
						|
         to a local path, may cause problem with scripts that do
 | 
						|
         "git fetch origin" or "git push origin".
 | 
						|
       * arbitrary refs such refs/whatever/not-fetched-by-default-to-cache
 | 
						|
   progress (bool): wether to show progress for fetch or not
 | 
						|
 | 
						|
Returns: If the checkout was successful, this returns the commit hash of
 | 
						|
  the checked-out-repo. Otherwise this returns None.
 | 
						|
 | 
						|
— **def [config\_get](/recipes/recipe_modules/git/api.py#343)(self, prop_name, \*\*kwargs):**
 | 
						|
 | 
						|
Returns: (str) The Git config output, or None if no output was generated.
 | 
						|
 | 
						|
Args:
 | 
						|
  prop_name: (str) The name of the config property to query.
 | 
						|
  kwargs: Forwarded to '__call__'.
 | 
						|
 | 
						|
— **def [count\_objects](/recipes/recipe_modules/git/api.py#46)(self, previous_result=None, can_fail_build=False, \*\*kwargs):**
 | 
						|
 | 
						|
Returns `git count-objects` result as a dict.
 | 
						|
 | 
						|
Args:
 | 
						|
  previous_result (dict): the result of previous count_objects call.
 | 
						|
    If passed, delta is reported in the log and step text.
 | 
						|
  can_fail_build (bool): if True, may fail the build and/or raise an
 | 
						|
    exception. Defaults to False.
 | 
						|
 | 
						|
Returns:
 | 
						|
  A dict of count-object values, or None if count-object run failed.
 | 
						|
 | 
						|
— **def [fetch\_tags](/recipes/recipe_modules/git/api.py#32)(self, remote_name=None, \*\*kwargs):**
 | 
						|
 | 
						|
Fetches all tags from the remote.
 | 
						|
 | 
						|
— **def [get\_remote\_url](/recipes/recipe_modules/git/api.py#360)(self, remote_name=None, \*\*kwargs):**
 | 
						|
 | 
						|
Returns: (str) The URL of the remote Git repository, or None.
 | 
						|
 | 
						|
Args:
 | 
						|
  remote_name: (str) The name of the remote to query, defaults to 'origin'.
 | 
						|
  kwargs: Forwarded to '__call__'.
 | 
						|
 | 
						|
— **def [get\_timestamp](/recipes/recipe_modules/git/api.py#315)(self, commit='HEAD', test_data=None, \*\*kwargs):**
 | 
						|
 | 
						|
Find and return the timestamp of the given commit.
 | 
						|
 | 
						|
— **def [new\_branch](/recipes/recipe_modules/git/api.py#383)(self, branch, name=None, upstream=None, \*\*kwargs):**
 | 
						|
 | 
						|
Runs git new-branch on a Git repository, to be used before git cl upload.
 | 
						|
 | 
						|
Args:
 | 
						|
  branch (str): new branch name, which must not yet exist.
 | 
						|
  name (str): step name.
 | 
						|
  upstream (str): to origin/master.
 | 
						|
  kwargs: Forwarded to '__call__'.
 | 
						|
 | 
						|
— **def [rebase](/recipes/recipe_modules/git/api.py#324)(self, name_prefix, branch, dir_path, remote_name=None, \*\*kwargs):**
 | 
						|
 | 
						|
Run rebase HEAD onto branch
 | 
						|
Args:
 | 
						|
name_prefix (str): a prefix used for the step names
 | 
						|
branch (str): a branch name or a hash to rebase onto
 | 
						|
dir_path (Path): directory to clone into
 | 
						|
remote_name (str): the remote name to rebase from if not origin
 | 
						|
### *recipe_modules* / [git\_cl](/recipes/recipe_modules/git_cl)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/git_cl/__init__.py#1): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
#### **class [GitClApi](/recipes/recipe_modules/git_cl/api.py#9)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
— **def [get\_description](/recipes/recipe_modules/git_cl/api.py#23)(self, patch_url=None, codereview=None, \*\*kwargs):**
 | 
						|
 | 
						|
DEPRECATED. Consider using gerrit.get_change_description instead.
 | 
						|
 | 
						|
— **def [issue](/recipes/recipe_modules/git_cl/api.py#54)(self, \*\*kwargs):**
 | 
						|
 | 
						|
— **def [set\_description](/recipes/recipe_modules/git_cl/api.py#34)(self, description, patch_url=None, codereview=None, \*\*kwargs):**
 | 
						|
 | 
						|
— **def [upload](/recipes/recipe_modules/git_cl/api.py#47)(self, message, upload_args=None, \*\*kwargs):**
 | 
						|
### *recipe_modules* / [gitiles](/recipes/recipe_modules/gitiles)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/gitiles/__init__.py#1): [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/url][recipe_engine/recipe_modules/url]
 | 
						|
 | 
						|
#### **class [Gitiles](/recipes/recipe_modules/gitiles/api.py#10)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
Module for polling a git repository using the Gitiles web interface.
 | 
						|
 | 
						|
— **def [commit\_log](/recipes/recipe_modules/gitiles/api.py#102)(self, url, commit, step_name=None, attempts=None):**
 | 
						|
 | 
						|
Returns: (dict) the Gitiles commit log structure for a given commit.
 | 
						|
 | 
						|
Args:
 | 
						|
  url (str): The base repository URL.
 | 
						|
  commit (str): The commit hash.
 | 
						|
  step_name (str): If not None, override the step name.
 | 
						|
  attempts (int): Number of times to try the request before failing.
 | 
						|
 | 
						|
— **def [download\_file](/recipes/recipe_modules/gitiles/api.py#118)(self, repository_url, file_path, branch='master', step_name=None, attempts=None, \*\*kwargs):**
 | 
						|
 | 
						|
Downloads raw file content from a Gitiles repository.
 | 
						|
 | 
						|
Args:
 | 
						|
  repository_url (str): Full URL to the repository.
 | 
						|
  branch (str): Branch of the repository.
 | 
						|
  file_path (str): Relative path to the file from the repository root.
 | 
						|
  step_name (str): Custom name for this step (optional).
 | 
						|
  attempts (int): Number of times to try the request before failing.
 | 
						|
 | 
						|
Returns:
 | 
						|
  Raw file content.
 | 
						|
 | 
						|
— **def [log](/recipes/recipe_modules/gitiles/api.py#56)(self, url, ref, limit=0, cursor=None, step_name=None, attempts=None, \*\*kwargs):**
 | 
						|
 | 
						|
Returns the most recent commits under the given ref with properties.
 | 
						|
 | 
						|
Args:
 | 
						|
  url (str): URL of the remote repository.
 | 
						|
  ref (str): Name of the desired ref (see Gitiles.refs).
 | 
						|
  limit (int): Number of commits to limit the fetching to.
 | 
						|
    Gitiles does not return all commits in one call; instead paging is
 | 
						|
    used. 0 implies to return whatever first gerrit responds with.
 | 
						|
    Otherwise, paging will be used to fetch at least this many
 | 
						|
    commits, but all fetched commits will be returned.
 | 
						|
  cursor (str or None): The paging cursor used to fetch the next page.
 | 
						|
  step_name (str): Custom name for this step (optional).
 | 
						|
 | 
						|
Returns:
 | 
						|
  A tuple of (commits, cursor).
 | 
						|
  Commits are a list of commits (as Gitiles dict structure) in reverse
 | 
						|
  chronological order. The number of commits may be higher than limit
 | 
						|
  argument.
 | 
						|
  Cursor can be used for subsequent calls to log for paging. If None,
 | 
						|
  signals that there are no more commits to fetch.
 | 
						|
 | 
						|
— **def [refs](/recipes/recipe_modules/gitiles/api.py#44)(self, url, step_name='refs', attempts=None):**
 | 
						|
 | 
						|
Returns a list of refs in the remote repository.
 | 
						|
### *recipe_modules* / [gsutil](/recipes/recipe_modules/gsutil)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/gsutil/__init__.py#1): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/python][recipe_engine/recipe_modules/python]
 | 
						|
 | 
						|
#### **class [GSUtilApi](/recipes/recipe_modules/gsutil/api.py#9)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
— **def [\_\_call\_\_](/recipes/recipe_modules/gsutil/api.py#14)(self, cmd, name=None, use_retry_wrapper=True, version=None, parallel_upload=False, multithreaded=False, \*\*kwargs):**
 | 
						|
 | 
						|
A step to run arbitrary gsutil commands.
 | 
						|
 | 
						|
Note that this assumes that gsutil authentication environment variables
 | 
						|
(AWS_CREDENTIAL_FILE and BOTO_CONFIG) are already set, though if you want to
 | 
						|
set them to something else you can always do so using the env={} kwarg.
 | 
						|
 | 
						|
Note also that gsutil does its own wildcard processing, so wildcards are
 | 
						|
valid in file-like portions of the cmd. See 'gsutil help wildcards'.
 | 
						|
 | 
						|
Arguments:
 | 
						|
  cmd: list of (string) arguments to pass to gsutil.
 | 
						|
       Include gsutil-level options first (see 'gsutil help options').
 | 
						|
  name: the (string) name of the step to use.
 | 
						|
        Defaults to the first non-flag token in the cmd.
 | 
						|
 | 
						|
— **def [cat](/recipes/recipe_modules/gsutil/api.py#98)(self, url, args=None, \*\*kwargs):**
 | 
						|
 | 
						|
— **def [copy](/recipes/recipe_modules/gsutil/api.py#105)(self, source_bucket, source, dest_bucket, dest, args=None, link_name='gsutil.copy', metadata=None, unauthenticated_url=False, \*\*kwargs):**
 | 
						|
 | 
						|
— **def [download](/recipes/recipe_modules/gsutil/api.py#84)(self, bucket, source, dest, args=None, \*\*kwargs):**
 | 
						|
 | 
						|
— **def [download\_url](/recipes/recipe_modules/gsutil/api.py#91)(self, url, dest, args=None, \*\*kwargs):**
 | 
						|
 | 
						|
  **@property**<br>— **def [gsutil\_py\_path](/recipes/recipe_modules/gsutil/api.py#10)(self):**
 | 
						|
 | 
						|
— **def [list](/recipes/recipe_modules/gsutil/api.py#121)(self, url, args=None, \*\*kwargs):**
 | 
						|
 | 
						|
— **def [remove\_url](/recipes/recipe_modules/gsutil/api.py#135)(self, url, args=None, \*\*kwargs):**
 | 
						|
 | 
						|
— **def [signurl](/recipes/recipe_modules/gsutil/api.py#128)(self, private_key_file, bucket, dest, args=None, \*\*kwargs):**
 | 
						|
 | 
						|
— **def [upload](/recipes/recipe_modules/gsutil/api.py#68)(self, source, bucket, dest, args=None, link_name='gsutil.upload', metadata=None, unauthenticated_url=False, \*\*kwargs):**
 | 
						|
### *recipe_modules* / [infra\_paths](/recipes/recipe_modules/infra_paths)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/infra_paths/__init__.py#1): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties]
 | 
						|
 | 
						|
#### **class [InfraPathsApi](/recipes/recipe_modules/infra_paths/api.py#8)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
infra_paths module is glue for design mistakes. It will be removed.
 | 
						|
 | 
						|
  **@property**<br>— **def [default\_git\_cache\_dir](/recipes/recipe_modules/infra_paths/api.py#17)(self):**
 | 
						|
 | 
						|
Returns the location of the default git cache directory.
 | 
						|
 | 
						|
This property should be used instead of using path['git_cache'] directly.
 | 
						|
 | 
						|
It returns git_cache path if it is defined (Buildbot world), otherwise
 | 
						|
uses the more generic [CACHE]/git path (LUCI world).
 | 
						|
 | 
						|
— **def [initialize](/recipes/recipe_modules/infra_paths/api.py#11)(self):**
 | 
						|
### *recipe_modules* / [presubmit](/recipes/recipe_modules/presubmit)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/presubmit/__init__.py#1): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
#### **class [PresubmitApi](/recipes/recipe_modules/presubmit/api.py#7)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
— **def [\_\_call\_\_](/recipes/recipe_modules/presubmit/api.py#12)(self, \*args, \*\*kwargs):**
 | 
						|
 | 
						|
Return a presubmit step.
 | 
						|
 | 
						|
  **@property**<br>— **def [presubmit\_support\_path](/recipes/recipe_modules/presubmit/api.py#8)(self):**
 | 
						|
### *recipe_modules* / [rietveld](/recipes/recipe_modules/rietveld)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/rietveld/__init__.py#1): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
#### **class [RietveldApi](/recipes/recipe_modules/rietveld/api.py#10)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
— **def [apply\_issue](/recipes/recipe_modules/rietveld/api.py#53)(self, \*root_pieces, \*\*kwargs):**
 | 
						|
 | 
						|
Call apply_issue from depot_tools.
 | 
						|
 | 
						|
Args:
 | 
						|
  root_pieces (strings): location where to run apply_issue, relative to the
 | 
						|
    checkout root.
 | 
						|
  authentication (string or None): authentication scheme to use. Can be None
 | 
						|
    or 'oauth2'. See also apply_issue.py --help (-E and --no-auth options.)
 | 
						|
 | 
						|
— **def [calculate\_issue\_root](/recipes/recipe_modules/rietveld/api.py#11)(self, extra_patch_project_roots=None):**
 | 
						|
 | 
						|
Returns path where a patch should be applied to based on "patch_project".
 | 
						|
 | 
						|
YOU SHOULD NOT USE THIS METHOD. Put this into gclient's config as
 | 
						|
patch_projects instead, and with luck you won't need to use
 | 
						|
calculate_patch_root from gclient api.
 | 
						|
TODO(tandrii): remove this method completely. See http://crbug.com/605563.
 | 
						|
 | 
						|
Maps Rietveld's "patch_project" to a path of directories relative to
 | 
						|
api.gclient.c.solutions[0].name which describe where to place the patch.
 | 
						|
 | 
						|
Args:
 | 
						|
  extra_patch_project_roots: Dict mapping project names to relative roots.
 | 
						|
 | 
						|
Returns:
 | 
						|
  Relative path or empty string if patch_project is not set or path for a
 | 
						|
  given is unknown.
 | 
						|
### *recipe_modules* / [tryserver](/recipes/recipe_modules/tryserver)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/tryserver/__init__.py#5): [gerrit](#recipe_modules-gerrit), [git](#recipe_modules-git), [git\_cl](#recipe_modules-git_cl), [rietveld](#recipe_modules-rietveld), [recipe\_engine/context][recipe_engine/recipe_modules/context], [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/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
#### **class [TryserverApi](/recipes/recipe_modules/tryserver/api.py#12)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 | 
						|
 | 
						|
— **def [add\_failure\_reason](/recipes/recipe_modules/tryserver/api.py#146)(self, reason):**
 | 
						|
 | 
						|
Records a more detailed reason why build is failing.
 | 
						|
 | 
						|
The reason can be any JSON-serializable object.
 | 
						|
 | 
						|
  **@property**<br>— **def [can\_apply\_issue](/recipes/recipe_modules/tryserver/api.py#23)(self):**
 | 
						|
 | 
						|
Returns true iff the properties exist to apply_issue from rietveld.
 | 
						|
 | 
						|
— **def [get\_files\_affected\_by\_patch](/recipes/recipe_modules/tryserver/api.py#46)(self, patch_root=None, \*\*kwargs):**
 | 
						|
 | 
						|
Returns list of paths to files affected by the patch.
 | 
						|
 | 
						|
Argument:
 | 
						|
  patch_root: path relative to api.path['root'], usually obtained from
 | 
						|
    api.gclient.calculate_patch_root(patch_project)
 | 
						|
 | 
						|
Returned paths will be relative to to patch_root.
 | 
						|
 | 
						|
TODO(tandrii): remove this doc.
 | 
						|
Unless you use patch_root=None, in which case old behavior is used
 | 
						|
which returns paths relative to checkout aka solution[0].name.
 | 
						|
 | 
						|
— **def [get\_footer](/recipes/recipe_modules/tryserver/api.py#209)(self, tag, patch_text=None):**
 | 
						|
 | 
						|
Gets a specific tag from a CL description
 | 
						|
 | 
						|
— **def [get\_footers](/recipes/recipe_modules/tryserver/api.py#182)(self, patch_text=None):**
 | 
						|
 | 
						|
Retrieves footers from the patch description.
 | 
						|
 | 
						|
footers are machine readable tags embedded in commit messages. See
 | 
						|
git-footers documentation for more information.
 | 
						|
 | 
						|
  **@property**<br>— **def [is\_gerrit\_issue](/recipes/recipe_modules/tryserver/api.py#30)(self):**
 | 
						|
 | 
						|
Returns true iff the properties exist to match a Gerrit issue.
 | 
						|
 | 
						|
  **@property**<br>— **def [is\_patch\_in\_git](/recipes/recipe_modules/tryserver/api.py#40)(self):**
 | 
						|
 | 
						|
  **@property**<br>— **def [is\_tryserver](/recipes/recipe_modules/tryserver/api.py#17)(self):**
 | 
						|
 | 
						|
Returns true iff we can apply_issue or patch.
 | 
						|
 | 
						|
— **def [normalize\_footer\_name](/recipes/recipe_modules/tryserver/api.py#213)(self, footer):**
 | 
						|
 | 
						|
— **def [set\_compile\_failure\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#125)(self):**
 | 
						|
 | 
						|
Mark the tryjob result as a compile failure.
 | 
						|
 | 
						|
  **@contextlib.contextmanager**<br>— **def [set\_failure\_hash](/recipes/recipe_modules/tryserver/api.py#155)(self):**
 | 
						|
 | 
						|
Context manager that sets a failure_hash build property on StepFailure.
 | 
						|
 | 
						|
This can be used to easily compare whether two builds have failed
 | 
						|
for the same reason. For example, if a patch is bad (breaks something),
 | 
						|
we'd expect it to always break in the same way. Different failures
 | 
						|
for the same patch are usually a sign of flakiness.
 | 
						|
 | 
						|
— **def [set\_invalid\_test\_results\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#137)(self):**
 | 
						|
 | 
						|
Mark the tryjob result as having invalid test results.
 | 
						|
 | 
						|
This means we run some tests, but the results were not valid
 | 
						|
(e.g. no list of specific test cases that failed, or too many
 | 
						|
tests failing, etc).
 | 
						|
 | 
						|
— **def [set\_patch\_failure\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#121)(self):**
 | 
						|
 | 
						|
Mark the tryjob result as failure to apply the patch.
 | 
						|
 | 
						|
— **def [set\_subproject\_tag](/recipes/recipe_modules/tryserver/api.py#103)(self, subproject_tag):**
 | 
						|
 | 
						|
Adds a subproject tag to the build.
 | 
						|
 | 
						|
This can be used to distinguish between builds that execute different steps
 | 
						|
depending on what was patched, e.g. blink vs. pure chromium patches.
 | 
						|
 | 
						|
— **def [set\_test\_failure\_tryjob\_result](/recipes/recipe_modules/tryserver/api.py#129)(self):**
 | 
						|
 | 
						|
Mark the tryjob result as a test failure.
 | 
						|
 | 
						|
This means we started running actual tests (not prerequisite steps
 | 
						|
like checkout or compile), and some of these tests have failed.
 | 
						|
## Recipes
 | 
						|
 | 
						|
### *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), [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/bot_update/examples/full.py#14)(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]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/cipd/examples/full.py#27)(api, use_pkg, pkg_files, pkg_dirs, ver_files, install_mode):**
 | 
						|
### *recipes* / [cipd:examples/platform\_suffix](/recipes/recipe_modules/cipd/examples/platform_suffix.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/cipd/examples/platform_suffix.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]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/cipd/examples/platform_suffix.py#22)(api, arch_override, bits_override, expect_error):**
 | 
						|
### *recipes* / [depot\_tools:examples/full](/recipes/recipe_modules/depot_tools/examples/full.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/depot_tools/examples/full.py#5): [depot\_tools](#recipe_modules-depot_tools), [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/depot_tools/examples/full.py#13)(api):**
 | 
						|
### *recipes* / [fetch\_end\_to\_end\_test](/recipes/recipes/fetch_end_to_end_test.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipes/fetch_end_to_end_test.py#5): [bot\_update](#recipe_modules-bot_update), [gclient](#recipe_modules-gclient), [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipes/fetch_end_to_end_test.py#16)(api):**
 | 
						|
### *recipes* / [gclient:examples/full](/recipes/recipe_modules/gclient/examples/full.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/gclient/examples/full.py#5): [gclient](#recipe_modules-gclient), [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/gclient/examples/full.py#45)(api):**
 | 
						|
### *recipes* / [gclient:tests/patch\_project](/recipes/recipe_modules/gclient/tests/patch_project.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/gclient/tests/patch_project.py#9): [gclient](#recipe_modules-gclient), [recipe\_engine/properties][recipe_engine/recipe_modules/properties]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/gclient/tests/patch_project.py#21)(api, patch_project, patch_repository_url):**
 | 
						|
### *recipes* / [gerrit:examples/full](/recipes/recipe_modules/gerrit/examples/full.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/gerrit/examples/full.py#5): [gerrit](#recipe_modules-gerrit), [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/gerrit/examples/full.py#11)(api):**
 | 
						|
### *recipes* / [git:examples/full](/recipes/recipe_modules/git/examples/full.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/git/examples/full.py#5): [git](#recipe_modules-git), [recipe\_engine/context][recipe_engine/recipe_modules/context], [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/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/git/examples/full.py#16)(api):**
 | 
						|
### *recipes* / [git\_cl:examples/full](/recipes/recipe_modules/git_cl/examples/full.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/git_cl/examples/full.py#9): [git\_cl](#recipe_modules-git_cl), [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
— **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/properties][recipe_engine/recipe_modules/properties]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/gitiles/examples/full.py#12)(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]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/gsutil/examples/full.py#11)(api):**
 | 
						|
 | 
						|
Move things around in a loop!
 | 
						|
### *recipes* / [infra\_paths:examples/full](/recipes/recipe_modules/infra_paths/examples/full.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/infra_paths/examples/full.py#7): [infra\_paths](#recipe_modules-infra_paths), [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]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/infra_paths/examples/full.py#16)(api):**
 | 
						|
### *recipes* / [presubmit:examples/full](/recipes/recipe_modules/presubmit/examples/full.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/presubmit/examples/full.py#5): [presubmit](#recipe_modules-presubmit)
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/presubmit/examples/full.py#10)(api):**
 | 
						|
### *recipes* / [rietveld:examples/full](/recipes/recipe_modules/rietveld/examples/full.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/rietveld/examples/full.py#5): [infra\_paths](#recipe_modules-infra_paths), [rietveld](#recipe_modules-rietveld), [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/rietveld/examples/full.py#13)(api):**
 | 
						|
### *recipes* / [tryserver:examples/full](/recipes/recipe_modules/tryserver/examples/full.py)
 | 
						|
 | 
						|
[DEPS](/recipes/recipe_modules/tryserver/examples/full.py#5): [tryserver](#recipe_modules-tryserver), [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/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 | 
						|
 | 
						|
— **def [RunSteps](/recipes/recipe_modules/tryserver/examples/full.py#17)(api):**
 | 
						|
 | 
						|
[recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/README.recipes.md#recipe_modules-context
 | 
						|
[recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/README.recipes.md#recipe_modules-file
 | 
						|
[recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/README.recipes.md#recipe_modules-json
 | 
						|
[recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/README.recipes.md#recipe_modules-path
 | 
						|
[recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/README.recipes.md#recipe_modules-platform
 | 
						|
[recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/README.recipes.md#recipe_modules-properties
 | 
						|
[recipe_engine/recipe_modules/python]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/README.recipes.md#recipe_modules-python
 | 
						|
[recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/README.recipes.md#recipe_modules-raw_io
 | 
						|
[recipe_engine/recipe_modules/source_manifest]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/README.recipes.md#recipe_modules-source_manifest
 | 
						|
[recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/README.recipes.md#recipe_modules-step
 | 
						|
[recipe_engine/recipe_modules/url]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/README.recipes.md#recipe_modules-url
 | 
						|
[recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/9a86c24698860be18af30d97b537c44b53d30c2e/recipe_engine/recipe_api.py#992
 |