class GitProgressReporter: def __init__(self, fn) -> None: from git.util import CallableRemoteProgress self._reporter = CallableRemoteProgress(self.wrap_fn(fn)) def __call__(self, msg: Union[str, bytes]) -> None: self._reporter._parse_progress_line( msg.decode("ascii").strip() if isinstance(msg, bytes) else msg) @staticmethod def wrap_fn(fn): return compose(fn, GitProgressEvent.parsed_from_gitpython)
def to_progress_instance(progress): """Given the 'progress' return a suitable object derived from RemoteProgress(). """ # new API only needs progress as a function if callable(progress): return CallableRemoteProgress(progress) # where None is passed create a parser that eats the progress elif progress is None: return RemoteProgress() # assume its the old API with an instance of RemoteProgress. return progress
def __init__(self, fn) -> None: from git.util import CallableRemoteProgress self._reporter = CallableRemoteProgress(self.wrap_fn(fn))