Skip to content

Support glob patterns when configuring mypy_path #9965

Open

Description

@gustavgransbo

Feature

Support the glob patterns * and ** in the mypy_path configuration.

Should work the same way as it does for the files configuration.

Pitch
I have a monorepo, with a bunch of python libraries located in a directory called libs.
All packages are namespace packages with the same namespace, but they are kept in their own directory inside of the libs directory:

repository_root
│
└───libs
│   └───pkg-a
│   |    └───namespace
│   |
│   └───pkg-b
│   |    └───namespace
│   |
│   └───pkg-c
│        └───namespace
│
└───mypy.ini

The mypy_path declaration in my mypy.ini looks something like this (but with dozens of packages):

mypy_path = $MYPY_CONFIG_FILE_DIR/libs/pkg-a:
    $MYPY_CONFIG_FILE_DIR/libs/pkg-b:
    $MYPY_CONFIG_FILE_DIR/libs/pkg-c:

It would be very convenient to use a glob pattern like this instead:

mypy_path = $MYPY_CONFIG_FILE_DIR/libs/*

It's more concise, and would avoid potential problems with forgetting to include a newly added package in mypy_path.

Thanks for a great tool!

Activity

  1. gustavgransbo commented on Apr 13, 2021

    @gustavgransbo
    ContributorAuthor

    I could have a go at implementing this, unless someone opposes the feature.

  2. DavidVujic commented on Nov 16, 2022

    @DavidVujic

    This would be a great feature! I am trying to figure out how to set the mypy_path with a wildcard, to avoid specifying all paths, also a monorepo.

  3. DavidVujic commented on Nov 16, 2022

    @DavidVujic

    I don't fully understand why, but mypy seems to recognize the packages when putting a py.typed file in the top namespace (such as in pkg-a in your example).

    Do you think this is a good enough workaround until the feature would be added @gustavgransbo?

    EDIT:
    maybe I went a little bit too fast here. The code editor is happy, but when running the mypy cli I get a new set of errors such as ...Source file found twice under different module names...

  4. jaklan commented on Mar 22, 2025

    @jaklan

    4 years later, mypy still doesn't support PEP 420-based implicit namespace packages properly, forcing us to deal with mypy_path. But as mentioned by @gustavgransbo - it's a total pain when used in a monorepo which could be easily improved with glob support...

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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions