KEMBAR78
Maybe __all__ should be added explicitly in stubgen · Issue #10314 · python/mypy · GitHub
Skip to content

Maybe __all__ should be added explicitly in stubgen #10314

@wrvsrx

Description

@wrvsrx

Feature

(A clear and concise description of your feature proposal.)

Maybe __all__ should be added explicitly in stubgen.

Pitch

(Please explain why this feature should be implemented and how it would be used. Add examples, if applicable.)

Adding __all__ to type stubs explicitly can avoid some error. For example:

├── test
│   └── init.py

__init__.py:

class Test:
    pass

__all__ = []

The type stub file generated by stubgen is
__init__.pyi:

class Test: ...

When using from .test import * to import test as a submodule, Test will be imported according to the type stub, while in fact Test should not be used.

A Possible Implement

Replace output(self) in stubgen.py by following implement:

    def output(self) -> str:
        """Return the text for the stub."""
        imports = ''
        if self._import_lines:
            imports += ''.join(self._import_lines)
        imports += ''.join(self.import_tracker.import_lines())
        if imports and self._output:
            imports += '\n'
        imports += ''.join(self._output)
        """export __all__ when it's defined"""
        if imports and self._all_ != None:
            imports += '\n'
        if self._all_ != None:
            imports += '__all__ = ['
            for name in self._all_:
                imports += ''.join(('\"', name, '\", '))
            imports += ']'
        return imports

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions