[Python-ideas] Was `os.errno` undocumented?
Steven D'Aprano
steve at pearwood.info
Wed May 30 07:58:52 EDT 2018
On Wed, May 30, 2018 at 04:18:51AM +0000, Steve Barnes wrote:
> Maybe what we need is to add a, possibly optional, or suppressible,
> warning whenever the import system encounters an implicit/indirect
> import?
I don't think your terminology ("implicit/indirect") is very accurate.
from os import errno
is as explicit as you can get.
> If an import that is working because the package we are
> importing it from has imported it from elsewhere, but it is not included
> in the __init__ for that package,
I think you mean __all__ for the module.
I'm not sure how that check would work. For a simple module, whenever
you call "from module import name", the interpreter has to inspect the
object it just imported, and if it is a module itself, check whether
"name" is in the owning module's __all__.
How would it work for packages? "from package import submodule" ought to
work without a warning even if submodule isn't listed in __all__.
Even for simple modules, it is prone to false positives: if "name" is
documented as public, but not listed in __all__ then that would wrongly
be detected as a non-public import.
But most problematic, it does nothing about this case:
import os
os.errno
I think this is best left for linters.
--
Steve
More information about the Python-ideas
mailing list