26.07.19 23:53, Guido van Rossum пише:
Serhiy proposed a relatively minor change to the behavior of `import *`
in the absence of __all__. This sounds like an idea we could try though
we should have a look at the implications for various well-known
packages. It is also a relatively minor problem that he's trying to
solve, so it's not worth breaking lots of stuff over. (We can just add
an __all__ to Tkinter that contains the desired list.)
I have tested this change on the stdlib, and it had very small effect.
It broke `test_pkg` [1] which tested star-import of package and the
`xml.parsers.expat` module [2] which is a thin wrapper around the
`pyexpat` module, including its submodules `model` and `errors`.
It is not easy to determine the effect on third-party code, but seems
that well-known packages has defined `__all__` in they main modules. It
may affect small projects which do not care much about linters and
`__all__`. But taking to account that the effect on the stdlib (where
many modules do not have `__all__`) is small, there is a hope that it is
small for other projects too.
It may be worth to mention that help() does not show imported module. It
shows only submodules.
`__all__` has been added to Tkinter recently. [3] Excluding imported
modules was not the only reason, there was other problem which can be
solved only by `__all__`.
[1] https://github.com/python/cpython/blob/master/Lib/test/test_pkg.py
[2]
https://github.com/python/cpython/blob/master/Lib/xml/parsers/expat.py[3]
https://bugs.python.org/issue29446
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/python-ideas@python.org/message/555D4MJ7G664LW6CGGKOUDJYZJMPDMFT/
Code of Conduct: http://python.org/psf/codeofconduct/