Jeffrey Kintscher writes:
If you use a problematic practice and a change to Python causes a symbol conflict for you, that's on you, not Python.
You are welcome to think that way. It's not representative of the Python development community, though. We care about breaking existing code, even if we don't think much of it.
Furthermore, "from module import *" is implicitly blessed, not only by that idiom itself (which requires special treatment in the parser!), but also by the existence of the __all__ dunder, which allows module authors to control which identifiers can be imported that way. Given that, evidently not all instances of "from module import *" are problematic, and which are problematic is a matter of taste. The principle of "consenting adults" means that unless we have a good reason, we'd rather avoid breaking *future* code that uses valid syntax.
A fairly tight sufficient condition is "there's no sane way to do it". For example, if Serhiy's "from ast import literal_eval; literal_eval('1e1000')" was the only way to spell infinity, there'd be an overwhelming sense that "we gotta do something." But when we already have two ways ("float('inf')" and "from math import inf; inf") you're gonna get float('inf') pushback instead.
Footnotes:  Yeah, I think I can speak for the community on this one.