Args: Context manager to capture `logging` streams logger: 'logging` logger object Returns: The captured output is available via `self.out` Example: ```python >>> from diffusers import logging >>> from diffusers.testing_utils import CaptureLogger >>>
| 861 | |
| 862 | |
| 863 | class CaptureLogger: |
| 864 | """ |
| 865 | Args: |
| 866 | Context manager to capture `logging` streams |
| 867 | logger: 'logging` logger object |
| 868 | Returns: |
| 869 | The captured output is available via `self.out` |
| 870 | Example: |
| 871 | ```python |
| 872 | >>> from diffusers import logging |
| 873 | >>> from diffusers.testing_utils import CaptureLogger |
| 874 | |
| 875 | >>> msg = "Testing 1, 2, 3" |
| 876 | >>> logging.set_verbosity_info() |
| 877 | >>> logger = logging.get_logger("diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion.py") |
| 878 | >>> with CaptureLogger(logger) as cl: |
| 879 | ... logger.info(msg) |
| 880 | >>> assert cl.out, msg + "\n" |
| 881 | ``` |
| 882 | """ |
| 883 | |
| 884 | def __init__(self, logger): |
| 885 | self.logger = logger |
| 886 | self.io = StringIO() |
| 887 | self.sh = logging.StreamHandler(self.io) |
| 888 | self.out = "" |
| 889 | |
| 890 | def __enter__(self): |
| 891 | self.logger.addHandler(self.sh) |
| 892 | return self |
| 893 | |
| 894 | def __exit__(self, *exc): |
| 895 | self.logger.removeHandler(self.sh) |
| 896 | self.out = self.io.getvalue() |
| 897 | |
| 898 | def __repr__(self): |
| 899 | return f"captured: {self.out}\n" |
| 900 | |
| 901 | |
| 902 | def enable_full_determinism(): |
no outgoing calls