This is expected behaviour. You pass __in
an iterable, a string is an iterable. It's not the desired result, I grant you, but it's just Python.
So first, this isn't a Release Blocker. At best it's a bug, of normal severity.
I'm going to class it as a "New Feature" though because you're basically asking to add type checking here, to make sure you pass the right kind of iterable.
(i.e. not a string.)
For that I'm going to say wontfix
. I strongly suspect it wouldn't be worth the effort (i.e the added code would be worse than the problem it's guarding against.) It's also quite likely that there are use-cases where being able to pass a string (as an iterable) is the desired behaviour: there will be people somewhere using that.