Context manager to capture `logging` streams Args: logger: 'logging` logger object Returns: The captured output is available via `self.out` Example: ```python >>> from transformers import logging >>> from transformers.testing_utils import CaptureLogge
| 1407 | |
| 1408 | |
| 1409 | class CaptureLogger: |
| 1410 | """ |
| 1411 | Context manager to capture `logging` streams |
| 1412 | |
| 1413 | Args: |
| 1414 | logger: 'logging` logger object |
| 1415 | |
| 1416 | Returns: |
| 1417 | The captured output is available via `self.out` |
| 1418 | |
| 1419 | Example: |
| 1420 | |
| 1421 | ```python |
| 1422 | >>> from transformers import logging |
| 1423 | >>> from transformers.testing_utils import CaptureLogger |
| 1424 | |
| 1425 | >>> msg = "Testing 1, 2, 3" |
| 1426 | >>> logging.set_verbosity_info() |
| 1427 | >>> logger = logging.get_logger("transformers.models.bart.tokenization_bart") |
| 1428 | >>> with CaptureLogger(logger) as cl: |
| 1429 | ... logger.info(msg) |
| 1430 | >>> assert cl.out, msg + "\n" |
| 1431 | ``` |
| 1432 | """ |
| 1433 | |
| 1434 | def __init__(self, logger): |
| 1435 | self.logger = logger |
| 1436 | self.io = StringIO() |
| 1437 | self.sh = logging.StreamHandler(self.io) |
| 1438 | self.out = "" |
| 1439 | |
| 1440 | def __enter__(self): |
| 1441 | self.logger.addHandler(self.sh) |
| 1442 | return self |
| 1443 | |
| 1444 | def __exit__(self, *exc): |
| 1445 | self.logger.removeHandler(self.sh) |
| 1446 | self.out = self.io.getvalue() |
| 1447 | |
| 1448 | def __repr__(self): |
| 1449 | return f"captured: {self.out}\n" |
| 1450 | |
| 1451 | |
| 1452 | @contextlib.contextmanager |
no outgoing calls