summaryrefslogtreecommitdiff
path: root/git/exc.py
diff options
context:
space:
mode:
Diffstat (limited to 'git/exc.py')
-rw-r--r--git/exc.py31
1 files changed, 19 insertions, 12 deletions
diff --git a/git/exc.py b/git/exc.py
index c066e5e2..e8ff784c 100644
--- a/git/exc.py
+++ b/git/exc.py
@@ -5,12 +5,13 @@
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
""" Module containing all exceptions thrown throughout the git package, """
+from gitdb.exc import BadName # NOQA @UnusedWildImport skipcq: PYL-W0401, PYL-W0614
from gitdb.exc import * # NOQA @UnusedWildImport skipcq: PYL-W0401, PYL-W0614
from git.compat import safe_decode
# typing ----------------------------------------------------
-from typing import IO, List, Optional, Tuple, Union, TYPE_CHECKING
+from typing import List, Sequence, Tuple, Union, TYPE_CHECKING
from git.types import PathLike
if TYPE_CHECKING:
@@ -48,8 +49,9 @@ class CommandError(GitError):
_msg = "Cmd('%s') failed%s"
def __init__(self, command: Union[List[str], Tuple[str, ...], str],
- status: Union[str, None, Exception] = None,
- stderr: Optional[IO[str]] = None, stdout: Optional[IO[str]] = None) -> None:
+ status: Union[str, int, None, Exception] = None,
+ stderr: Union[bytes, str, None] = None,
+ stdout: Union[bytes, str, None] = None) -> None:
if not isinstance(command, (tuple, list)):
command = command.split()
self.command = command
@@ -65,10 +67,12 @@ class CommandError(GitError):
status = "'%s'" % s if isinstance(status, str) else s
self._cmd = safe_decode(command[0])
- self._cmdline = ' '.join(str(safe_decode(i)) for i in command)
+ self._cmdline = ' '.join(safe_decode(i) for i in command)
self._cause = status and " due to: %s" % status or "!"
- self.stdout = stdout and "\n stdout: '%s'" % safe_decode(str(stdout)) or ''
- self.stderr = stderr and "\n stderr: '%s'" % safe_decode(str(stderr)) or ''
+ stdout_decode = safe_decode(stdout)
+ stderr_decode = safe_decode(stderr)
+ self.stdout = stdout_decode and "\n stdout: '%s'" % stdout_decode or ''
+ self.stderr = stderr_decode and "\n stderr: '%s'" % stderr_decode or ''
def __str__(self) -> str:
return (self._msg + "\n cmdline: %s%s%s") % (
@@ -88,9 +92,9 @@ class GitCommandError(CommandError):
""" Thrown if execution of the git command fails with non-zero status code. """
def __init__(self, command: Union[List[str], Tuple[str, ...], str],
- status: Union[str, None, Exception] = None,
- stderr: Optional[IO[str]] = None,
- stdout: Optional[IO[str]] = None,
+ status: Union[str, int, None, Exception] = None,
+ stderr: Union[bytes, str, None] = None,
+ stdout: Union[bytes, str, None] = None,
) -> None:
super(GitCommandError, self).__init__(command, status, stderr, stdout)
@@ -109,7 +113,7 @@ class CheckoutError(GitError):
were checked out successfully and hence match the version stored in the
index"""
- def __init__(self, message: str, failed_files: List[PathLike], valid_files: List[PathLike],
+ def __init__(self, message: str, failed_files: Sequence[PathLike], valid_files: Sequence[PathLike],
failed_reasons: List[str]) -> None:
Exception.__init__(self, message)
@@ -135,8 +139,11 @@ class HookExecutionError(CommandError):
"""Thrown if a hook exits with a non-zero exit code. It provides access to the exit code and the string returned
via standard output"""
- def __init__(self, command: Union[List[str], Tuple[str, ...], str], status: Optional[str],
- stderr: Optional[IO[str]] = None, stdout: Optional[IO[str]] = None) -> None:
+ def __init__(self, command: Union[List[str], Tuple[str, ...], str],
+ status: Union[str, int, None, Exception],
+ stderr: Union[bytes, str, None] = None,
+ stdout: Union[bytes, str, None] = None) -> None:
+
super(HookExecutionError, self).__init__(command, status, stderr, stdout)
self._msg = "Hook('%s') failed%s"