% yes | python3 -c "import pty; pty.spawn(['cat'])"
y
...
y^CTraceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3.10/pty.py", line 181, in spawn
_copy(master_fd, master_read, stdin_read)
File "/usr/lib/python3.10/pty.py", line 161, in _copy
_writen(master_fd, data)
File "/usr/lib/python3.10/pty.py", line 127, in _writen
n = os.write(fd, data)
KeyboardInterrupt
You will see 2048 lines of y due to tty echo, then the output stops and hangs forever.
Both python and cat block on write, waiting each other consume something from pty buffer.
Tested on Linux/macOS with CPython 3.10.