maybe I'm biased, but python feels like endless boilerplate for unixy stuff
also I'm mostly using it to prepare an interactive environment anyway, so I don't see alternatives for my usecase (maybe zellij, but they don't even support sending keystrokes to a specific pane)
These are all great. If you need to do something more involved, pexpect is also worth mentioning. It's a reimplementation of expect in python that's easy to be productive with quickly.
I used it in a previous job to automate configuring thousands of network devices
I mean, a tty is just a file descriptor... there have been script(1), expect(1) and chat(8) since the 80ies. tmux is not really necessary.