Skip to content

Error when running on code inside venv containing typing-extensions #11477

Open

Description

@kodek16

Bug Report

When running mypy on code installed in a virtualenv environment, mypy will fail outright if the environment contains typing-extensions.

To Reproduce

See repo containing a minimal example. The steps below describe the general idea:

  1. Create a fresh virtual environment.
  2. Create a minimal library with a setup.py that lists typing-extensions in install_requires.
  3. Install the library to the virtual environment.
  4. Run mypy on a file inside the environment that is part of the library (mypy venv/lib/python3.Y/site-packages/my_project/hello.py).

Expected Behavior

mypy would report errors in hello.py, if any, or exit with 0 if none.

Actual Behavior

mypy doesn't check hello.py, complaining that it found a typing_extensions.py in the environment:

mypy: "project-venv/lib/python3.6/site-packages/typing_extensions.py" shadows library module "typing_extensions"
note: A user-defined top-level module with name "typing_extensions" is not supported

Your Environment

  • Mypy version used: 0.910.
  • Mypy command-line flags: none
  • Mypy configuration options from mypy.ini (and other config files): none
  • Python version used: multiple (3.6.8, 3.8.8).
  • Operating system and version: CentOS 7

Activity

  1. emmatyping commented on Nov 6, 2021

    @emmatyping
    Member

    You are running mypy against something in site-packages, which we generally discourage for this reason that you are running into. You should run mypy against your package sources when they are not installed. It is supposed to raise an error here however about running against something in site packages...

  2. kodek16 commented on Nov 9, 2021

    @kodek16
    Author

    The reason I'm running against site-packages is because of a non-standard build workflow. In particular, I need to rewrite the directory structure of my source Python files to look slightly differently. So I'm constructing an intermediate environment to run mypy (and pytest) against that has both the rewritten source files and the dependencies from pip.

    Is there no way around this from the mypy side?

  3. stfujnkk commented on May 11, 2024

    @stfujnkk

    The reason I'm running against site-packages is because of a non-standard build workflow. In particular, I need to rewrite the directory structure of my source Python files to look slightly differently. So I'm constructing an intermediate environment to run mypy (and pytest) against that has both the rewritten source files and the dependencies from pip.

    Is there no way around this from the mypy side?

    image

    I encountered a similar issue when using the mypy-type-checker plugin in VSCode. I fixed it by removing the above path in python.analysis.extraPaths field.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions