# -*- coding: utf-8 -*-
"""
cookiecutter.exceptions
-----------------------
All exceptions used in the Cookiecutter code base are defined here.
"""
[docs]class CookiecutterException(Exception):
"""
Base exception class. All Cookiecutter-specific exceptions should subclass
this class.
"""
[docs]class UnknownTemplateDirException(CookiecutterException):
"""
Raised when Cookiecutter cannot determine which directory is the project
template, e.g. more than one dir appears to be a template dir.
"""
[docs]class MissingProjectDir(CookiecutterException):
"""
Raised during cleanup when remove_repo() can't find a generated project
directory inside of a repo.
"""
[docs]class ConfigDoesNotExistException(CookiecutterException):
"""
Raised when get_config() is passed a path to a config file, but no file
is found at that path.
"""
[docs]class InvalidConfiguration(CookiecutterException):
"""
Raised if the global configuration file is not valid YAML or is
badly constructed.
"""
[docs]class UnknownRepoType(CookiecutterException):
"""
Raised if a repo's type cannot be determined.
"""
[docs]class VCSNotInstalled(CookiecutterException):
"""
Raised if the version control system (git or hg) is not installed.
"""
[docs]class ContextDecodingException(CookiecutterException):
"""
Raised when a project's JSON context file can not be decoded.
"""
[docs]class OutputDirExistsException(CookiecutterException):
"""
Raised when the output directory of the project exists already.
"""
[docs]class InvalidModeException(CookiecutterException):
"""
Raised when cookiecutter is called with both `no_input==True` and
`replay==True` at the same time.
"""
[docs]class FailedHookException(CookiecutterException):
"""
Raised when a hook script fails
"""
[docs]class UndefinedVariableInTemplate(CookiecutterException):
"""Raised when a template uses a variable which is not defined in the
context.
"""
def __init__(self, message, error, context):
self.message = message
self.error = error
self.context = context
def __str__(self):
return (
"{self.message}. "
"Error message: {self.error.message}. "
"Context: {self.context}"
).format(**locals())
[docs]class UnknownExtension(CookiecutterException):
"""Raised when an environment is unable to import a required extension."""
[docs]class RepositoryNotFound(CookiecutterException):
"""
Raised when the specified cookiecutter repository doesn't exist.
"""
[docs]class RepositoryCloneFailed(CookiecutterException):
"""Raised when a cookiecutter template can't be cloned."""
[docs]class InvalidZipRepository(CookiecutterException):
"""
Raised when the specified cookiecutter repository isn't a valid
Zip archive.
"""