As one of those who 1. thinks there IS a problem, 2. that the problem is bigger than most of the people on this thread seem to think, I am nevertheless in agreement that  tackling the problem by changing the language to outlaw direct str iteration would just be far, far too disruptive. I am much more receptive to the idea of adding a totally separate atomic string.
 
I agree with the numerous posters who have brought up the backward-compatibility concern. This change *would* break lots of code. At the same time, this bites me consistently, so I'd like to do something soon... at least sooner than 6.0 ;).

I believe that this is better solved by static analysis. I suggested some time ago on typing-sig that we explore adding a `Chr` type to typing, and type `str` as a `Sequence[Chr]` rather than a `Sequence[str]`. You can read the proposal here (it's not very complex at all, and should be backward-compatible for all but the hairiest cases, which just need either a cast or an annotation):

https://mail.python.org/archives/list/typing-sig@python.org/thread/OLCQHSNCLM2TOHRQWB3WPSI66AA5A3G7

With it, we have a path forward where type-checkers like mypy assure us that we're really doing what we think we're doing with that string, and require explicit annotations or casts for the ambiguous cases. That discussion fizzled out, but I'm still very much interested in exploring the idea if it seems like a realistic alternative. I think it makes much more sense than changing the mostly-sensible, well-known, often-used runtime behavior of strings.

Brandt

Also as a person who has really come to LOVE static typing in Python since it has saved me literally HOURS of debugging the (awful) code I tend to write (mostly in PyCharm actually; haven't made much use of mypy yet), tackling this issue via mypy and static analysis very much sounds, to me, like a great way to go.

If there were a Chr type with which to statically type against in the manner of Sequence[Chr], and also perhaps an "AtomicString" static type that does nothing but disallow Sequence-type behavior (iteration and slicing) in static analysis (but could still be type cast to regular old str), I sure would use the heck out of it. The type/method warnings in Pycharm would solve ALL of the problems I have run into over the years- I would no longer need to write non-idiomatic, unpythonic guarding code trying to stop myself from sending strings into functions meant for non-str iterables of strings only.