I need to add a couple of updates to this bug report.
First, I have duplicated this bug, using both "emacs -nw -Q" and in commenting out my init.el file completely, essentially by doing the same thing.
Second, (and I consider this to be a very important datapoint, that I forgot to report, to my everlasting shame), I am using Emacs under screen. Indeed, if I run "emacs -nw -Q ~/aoeu.py" without screen, my very brief tests don't run into a problem, but if I start a new screen instance, and open "emacs -nw -Q ~/aoeu.py", I can type
def hello(world):
and I get
def hello(w:rld)
so whether the problem is with Emacs/screen interaction, or is strictly a problem with screen, I do not know.
(For what it's worth, I've most recently been typing
in an attempt to test tabbing; the cursor can jump at any time through the process, although I haven't been keeping track of when that happens. This is really just a "stream-of-consciousness" tab test.)