Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Calling type[T] returns the parent of T on Python 3.12+ #18088

Open
Avasam opened this issue Nov 1, 2024 · 0 comments
Open

Calling type[T] returns the parent of T on Python 3.12+ #18088

Avasam opened this issue Nov 1, 2024 · 0 comments
Labels
bug mypy got something wrong

Comments

@Avasam
Copy link
Contributor

Avasam commented Nov 1, 2024

Bug Report / To Reproduce
Ok so this is a weird one, and I've been completely unable to replicate it in an MRE. So here's the PR where this happened to us: pypa/setuptools#4726

To replicate, clone the setuptools repo, install the [core,type] extras, then change the start of setuptools/command/install.py's install.do_egg_install to:

    def do_egg_install(self) -> None:
        easy_install = cast(
            type[easy_install_cls], self.distribution.get_command_class('easy_install')
        )

        cmd = easy_install(
            self.distribution,
            args="x",
            root=self.root,
            record=self.record,
        )
        reveal_type(cmd)

On Python 3.11

setuptools\command\install.py:150: note: Revealed type is "setuptools.command.easy_install.easy_install"
Success: no issues found in 143 source files

On Python 3.12 & 3.13

setuptools\command\install.py:150: note: Revealed type is "setuptools.Command"
setuptools\command\install.py:166: error: Unexpected keyword argument "show_deprecation" for "run" of "Command"  [call-arg]
Found 1 error in 1 file (checked 143 source files)

My first guess is this has something to do with distutils removal in 3.12, but the results I'm getting are still nonsensical and probably reveal a hidden bug in mypy.

Expected Behavior
cmd should be of type setuptools.command.easy_install or alias easy_install_cls

Actual Behavior

cmd is of type setuptools.Command (superclass of setuptools.command.easy_install)

Your Environment

@Avasam Avasam added the bug mypy got something wrong label Nov 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug mypy got something wrong
Projects
None yet
Development

No branches or pull requests

1 participant