Skip to content

Commit

Permalink
Add exiter_as context manager
Browse files Browse the repository at this point in the history
  • Loading branch information
blorente committed Jul 24, 2019
1 parent e41ef3b commit 35f52ae
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion src/python/pants/base/exception_sink.py
Expand Up @@ -10,6 +10,7 @@
import threading
import traceback
from contextlib import contextmanager
from typing import Callable

import setproctitle

Expand Down Expand Up @@ -175,7 +176,22 @@ def reset_log_location(cls, new_log_location):
cls._shared_error_fileobj = shared_error_stream

@classmethod
def reset_exiter(cls, exiter):
def get_global_exiter(cls) -> Exiter:
return cls._exiter

@classmethod
@contextmanager
def exiter_as(cls, new_exiter_fun: Callable[[Exiter], Exiter]) -> None:
previous_exiter = cls._exiter
new_exiter = new_exiter_fun(previous_exiter)
try:
cls.reset_exiter(new_exiter)
yield
finally:
cls.reset_exiter(previous_exiter)

@classmethod
def reset_exiter(cls, exiter: Exiter) -> None:
"""
Class state:
- Overwrites `cls._exiter`.
Expand Down

0 comments on commit 35f52ae

Please sign in to comment.