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[1] 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:
[1] Yeah, I think I can speak for the community on this one.
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/GHRHZNNPHN6WUN7PHPUI4TPI4ENOP5VC/
Code of Conduct: http://python.org/psf/codeofconduct/