old_contents: # Copyright 2019 The LUCI Authors. All rights reserved.
  # Use of this source code is governed under the Apache License, Version 2.0
  # that can be found in the LICENSE file.
  
  """Defines all explicitly raised exception types for the recipe engine."""
  
  
  class RecipeUsageError(Exception):
    """Base exception class for all errors raised due to some misuse of the
    recipes system (i.e. a problem with a user's recipe repo, recipe code, module
    code, etc.)
  
    Caught by the recipe engine in `run.py`.
    """
  
  class RecipeLoadError(RecipeUsageError):
    """Raised when loading a recipe raises a non-syntax exception."""
  
  class RecipeSyntaxError(SyntaxError, RecipeUsageError):
    """Raised when a recipe has invalid syntax."""
  
  class MalformedRecipeError(RecipeUsageError):
    """Raised when a recipe doesn't contain RunSteps + GenTests."""
  
  class CyclicalDependencyError(RecipeUsageError):
    """Raised when a module depends on itself (possibly transitively)."""
  
  class UnknownRepoName(RecipeUsageError, KeyError):
    """Raised when an unknown repo_name is referenced."""
  
  class UnknownRecipeModule(RecipeUsageError, KeyError):
    """Raised when an unknown recipe module is referenced."""
  
  class UnknownRecipe(RecipeUsageError, KeyError):
    """Raised when an unknown recipe is referenced."""
  
  class UndefinedPropertyException(RecipeUsageError):
    """Raised when invoking a RunSteps or RecipeApiPlain constructor where the
    arguments don't match the PROPERTIES for that invocation."""
  
  class BadProtoDefinitions(RecipeUsageError):
    """Raised when multiple repos have the same .proto file."""
  
  
  class RecipeEngineError(Exception):
    """Base exception class for all errors due to an error within the recipe
    engine."""
  
  class GitFetchError(RecipeEngineError):
    """Raised when recipe_engine.internal.fetch.GitBackend fails a git
    invocation."""
  
  class UnresolvedRefspec(RecipeEngineError):
    """Raised from fetch.Backend.assert_resolved if the given revision is,
    in fact, not resolved."""
  
new_contents: # Copyright 2019 The LUCI Authors. All rights reserved.
  # Use of this source code is governed under the Apache License, Version 2.0
  # that can be found in the LICENSE file.
  
  """Defines all explicitly raised exception types for the recipe engine."""
  
  
  class RecipeUsageError(Exception):
    """Base exception class for all errors raised due to some misuse of the
    recipes system (i.e. a problem with a user's recipe repo, recipe code, module
    code, etc.)
  
    Caught by the recipe engine in `run.py`.
    """
  
  class RecipeLoadError(RecipeUsageError):
    """Raised when loading a recipe raises a non-syntax exception."""
  
  class RecipeSyntaxError(SyntaxError, RecipeUsageError):
    """Raised when a recipe has invalid syntax."""
  
  class MalformedRecipeError(RecipeUsageError):
    """Raised when a recipe doesn't contain RunSteps + GenTests."""
  
  class CyclicalDependencyError(RecipeUsageError):
    """Raised when a module depends on itself (possibly transitively)."""
  
  class UnknownRepoName(RecipeUsageError, KeyError):
    """Raised when an unknown repo_name is referenced."""
  
  class UnknownRecipeModule(RecipeUsageError, KeyError):
    """Raised when an unknown recipe module is referenced."""
  
  class UnknownRecipe(RecipeUsageError, KeyError):
    """Raised when an unknown recipe is referenced."""
  
  class UndefinedPropertyException(RecipeUsageError):
    """Raised when invoking a RunSteps or RecipeApiPlain constructor where the
    arguments don't match the PROPERTIES for that invocation."""
  
  class BadProtoDefinitions(RecipeUsageError):
    """Raised when multiple repos have the same .proto file."""
  
  
  class RecipeEngineError(Exception):
    """Base exception class for all errors due to an error within the recipe
    engine."""
  
  class GitFetchError(RecipeEngineError):
    """Raised when recipe_engine.internal.fetch.GitBackend fails a git
    invocation."""
  
  class UnresolvedRefspec(RecipeEngineError):
    """Raised from fetch.Backend.assert_resolved if the given revision is,
    in fact, not resolved."""
  
  
  ### BaseException-derived exceptions.
  
  class CrashEngine(BaseException):
    """Raised from the engine when the user-provided functions (like step
    callbacks) raise an exception.
  
    This exception should only be handled by the recipe engine.
    """
    def __init__(self, reason):
      super(CrashEngine, self).__init__(reason)
      self.reason = reason
  
subject: Add CrashEngine exception.