Spaces:
Configuration error
Configuration error
| import os | |
| import sys | |
| from contextlib import contextmanager | |
| def silenced_output(): | |
| """ | |
| A context manager to suppress all stdout and stderr, | |
| including from C-level libraries. | |
| """ | |
| # Open a null file descriptor | |
| devnull_fd = os.open(os.devnull, os.O_RDWR) | |
| # Save the original stdout and stderr file descriptors | |
| original_stdout_fd = sys.stdout.fileno() | |
| original_stderr_fd = sys.stderr.fileno() | |
| # Duplicate the original file descriptors to save them | |
| saved_stdout_fd = os.dup(original_stdout_fd) | |
| saved_stderr_fd = os.dup(original_stderr_fd) | |
| try: | |
| # Redirect Python's stdout/stderr file descriptors | |
| # to the null device | |
| sys.stdout.flush() | |
| sys.stderr.flush() | |
| os.dup2(devnull_fd, original_stdout_fd) | |
| os.dup2(devnull_fd, original_stderr_fd) | |
| # Yield control back to the 'with' block | |
| yield | |
| finally: | |
| # Restore the original stdout/stderr from the saved FDs | |
| sys.stdout.flush() | |
| sys.stderr.flush() | |
| os.dup2(saved_stdout_fd, original_stdout_fd) | |
| os.dup2(saved_stderr_fd, original_stderr_fd) | |
| # Close the temporary FDs | |
| os.close(saved_stdout_fd) | |
| os.close(saved_stderr_fd) | |
| os.close(devnull_fd) | |