Skip to content

mypy should search parent directories for pyproject.toml config file #10613

Closed

Description

@benburk

Bug Report

First of all, thank you for supporting the highly requested pyproject.toml config format #5205

I'm hoping we can resolve an issue to bring mypy inline with several others including but not limited to isort, black, and pylint. I think mypy should search parent directories for pyproject.toml config file. I think mypy should search up until the user's home directory (or ~25 directories, whichever comes first) for config files.

To Reproduce

Prepare a project such as this

outer/
    inner/
        main.py
    pyproject.toml

From inside the inner directory, run mypy main.py

Expected Behavior

I expect mypy to use the settings defined in the pyproject.toml file found in the parent directory outer. I'm guessing mypy only checks the directory it is invoked from.

Actual Behavior

The settings inside pyproject.toml are not used.

Your Environment

  • Mypy version used: 0.900
  • Mypy command-line flags: None
  • Mypy configuration options from mypy.ini (and other config files): None
  • Python version used: 3.9.4
  • Operating system and version: macOS 10.15

Activity

  1. yeputons commented on Nov 2, 2021

    @yeputons

    A four-year old related discussion about setup.cfg is available at #3377 (comment)

  2. Felixoid commented on Nov 29, 2022

    @Felixoid
    Contributor

    Hello.

    As far as I understand the meaning of pyproject.toml it's supposed to be a global project configuration.

    Why should one set the config file manually or have meaningless symlinks everywhere when working in subdirectories?

    Another good approach would be to set a stop for a project directory like it's done in black

  3. zyxkad commented on Mar 2, 2023

    @zyxkad

    I saw the comment at #3377 (comment).
    It's a good point of view. I suggest mypy should stop search the configs when find .git directory or others VCS cache.
    Will that help? @gvanrossum

    Edit: I reviewed this comment, and I found I misunderstood you. You think the config will affect the subdirectories, that's true, but we actually want that affect subdirs. You don't need worried about different act about check parents or not (probably you can add a flag on the pyproject.toml to enable parent search if you really worried about it). If people want specific check, they should always write a config in that dir, or always add flags to their check command.

  4. Felixoid commented on Feb 26, 2024

    @Felixoid
    Contributor

    Dear @hauntsaninja, @ilevkivskyi, @AlexWaygood and @JukkaL, mentioning you as top 4

    If I'd try to implement it somewhere around this line, would you consider reviewing the PR?

    It could have the same fuse as pylint, so won't leave the repository in case of .git or .hg directory is presented

  5. ilevkivskyi commented on Feb 26, 2024

    @ilevkivskyi
    Member

    I can't guarantee I will have time to review the PR, but if it is straightforward, there is high chance that either me or someone else will review it.

  6. Felixoid commented on Feb 29, 2024

    @Felixoid
    Contributor

    Ok, here's the first shot #16965

    It's exactly how it's done in the pylint, but with os.path instead of pathlibPath

  7. Felixoid commented on May 29, 2024

    @Felixoid
    Contributor

    It's already three months since the PR is created =(

    And, coincidentally, it's my birthday today. It would be a good present to review the code ^_^

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

    bugmypy got something wrongtopic-configurationConfiguration files and flags

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions