Add IPKernelApp.capture_fd_output config to disable FD-level capture#752
Merged
blink1073 merged 1 commit intoipython:masterfrom Aug 26, 2021
Merged
Add IPKernelApp.capture_fd_output config to disable FD-level capture#752blink1073 merged 1 commit intoipython:masterfrom
blink1073 merged 1 commit intoipython:masterfrom
Conversation
allows opting out of the new behavior, if so desired
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds a process-level flag to opt out of this behavior, if folks want to restore the previous behavior.
It might be nice to expose an API to turn this off/on on a context basis, wether it's on by default or not. That would give folks a better way to manage output capture based on library behavior.
closes #737
wurlitzer is a tool that implements the same functionality as a context manager, if that's helpful. There are lots of edge cases involving flushes, etc. I dealt with over there. It also defines an IPython extension.
Be aware that doing this can cause hangs if GIL-holding code tries to write more than pipe-max-size bytes (usually 64k by default). Running this code will hang most IPython kernels in a non-interruptible state after #630:
see more info minrk/wurlitzer#48