Skip to content

Commit f1ace25

Browse files
committed
Add types to cmd.py AutoInterrupt
1 parent 887f249 commit f1ace25

File tree

2 files changed

+21
-18
lines changed

2 files changed

+21
-18
lines changed

Diff for: git/cmd.py

+20-17
Original file line numberDiff line numberDiff line change
@@ -357,11 +357,11 @@ class AutoInterrupt(object):
357357

358358
__slots__ = ("proc", "args")
359359

360-
def __init__(self, proc, args):
360+
def __init__(self, proc: Union[None, subprocess.Popen], args: Any) -> None:
361361
self.proc = proc
362362
self.args = args
363363

364-
def __del__(self):
364+
def __del__(self) -> None:
365365
if self.proc is None:
366366
return
367367

@@ -377,13 +377,13 @@ def __del__(self):
377377
# did the process finish already so we have a return code ?
378378
try:
379379
if proc.poll() is not None:
380-
return
380+
return None
381381
except OSError as ex:
382382
log.info("Ignored error after process had died: %r", ex)
383383

384384
# can be that nothing really exists anymore ...
385385
if os is None or getattr(os, 'kill', None) is None:
386-
return
386+
return None
387387

388388
# try to kill it
389389
try:
@@ -400,10 +400,11 @@ def __del__(self):
400400
call(("TASKKILL /F /T /PID %s 2>nul 1>nul" % str(proc.pid)), shell=True)
401401
# END exception handling
402402

403-
def __getattr__(self, attr):
403+
def __getattr__(self, attr: str) -> Any:
404404
return getattr(self.proc, attr)
405405

406-
def wait(self, stderr=b''): # TODO: Bad choice to mimic `proc.wait()` but with different args.
406+
# TODO: Bad choice to mimic `proc.wait()` but with different args.
407+
def wait(self, stderr: Union[None, bytes] = b'') -> int:
407408
"""Wait for the process and return its status code.
408409
409410
:param stderr: Previously read value of stderr, in case stderr is already closed.
@@ -413,20 +414,22 @@ def wait(self, stderr=b''): # TODO: Bad choice to mimic `proc.wait()` but with
413414
stderr = b''
414415
stderr = force_bytes(data=stderr, encoding='utf-8')
415416

416-
status = self.proc.wait()
417-
418-
def read_all_from_possibly_closed_stream(stream):
419-
try:
420-
return stderr + force_bytes(stream.read())
421-
except ValueError:
422-
return stderr or b''
417+
if self.proc is not None:
418+
status = self.proc.wait()
423419

424-
if status != 0:
425-
errstr = read_all_from_possibly_closed_stream(self.proc.stderr)
426-
log.debug('AutoInterrupt wait stderr: %r' % (errstr,))
427-
raise GitCommandError(remove_password_if_present(self.args), status, errstr)
420+
def read_all_from_possibly_closed_stream(stream):
421+
try:
422+
return stderr + force_bytes(stream.read())
423+
except ValueError:
424+
return stderr or b''
425+
426+
if status != 0:
427+
errstr = read_all_from_possibly_closed_stream(self.proc.stderr)
428+
log.debug('AutoInterrupt wait stderr: %r' % (errstr,))
429+
raise GitCommandError(remove_password_if_present(self.args), status, errstr)
428430
# END status handling
429431
return status
432+
430433
# END auto interrupt
431434

432435
class CatFileContentStream(object):

Diff for: git/exc.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class GitCommandError(CommandError):
9191
""" Thrown if execution of the git command fails with non-zero status code. """
9292

9393
def __init__(self, command: Union[List[str], Tuple[str, ...], str],
94-
status: Union[str, None, Exception] = None,
94+
status: Union[str, int, None, Exception] = None,
9595
stderr: Optional[IO[str]] = None,
9696
stdout: Optional[IO[str]] = None,
9797
) -> None:

0 commit comments

Comments
 (0)