Skip to content

from module import submodule implicit reexport is allowed #12689

Closed
@mikeroll

Description

@mikeroll

Bug Report
mypy --no-implicit-reexport doesn't catch reexports written in the form of from module import submodule.

To Reproduce

# pkg/lib.py

# implicit re-exports
import requests
import requests as demands
import requests.status_codes as requests_status_codes
from requests import Request

# implicit submodule re-export, but mypy doesn't care
from requests import status_codes
# pkg/shell.py

from pkg.lib import requests, demands, requests_status_codes, Request, status_codes

Expected Behavior
I would expect each of those reexports to trigger an error.

Actual Behavior
from requests import status_codes is ignored.

❯ mypy --no-implicit-reexport pkg
pkg/shell.py:1: error: Module "pkg.lib" does not explicitly export attribute "requests"; implicit reexport disabled
pkg/shell.py:1: error: Module "pkg.lib" does not explicitly export attribute "demands"; implicit reexport disabled
pkg/shell.py:1: error: Module "pkg.lib" does not explicitly export attribute "requests_status_codes"; implicit reexport disabled
pkg/shell.py:1: error: Module "pkg.lib" does not explicitly export attribute "Request"; implicit reexport disabled
Found 4 errors in 1 file (checked 3 source files)

Your Environment

  • Mypy version used: 0.942
  • Mypy command-line flags: --no-implicit-reexports
  • Mypy configuration options from mypy.ini (and other config files): None
  • Python version used: 3.9.10
  • Operating system and version: Arch Linux latest

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugmypy got something wrongtopic-implicit-reexportThe --no-implicit-reexport option

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions