Skip to content

False positive bad-override in mixin + concrete base multiple inheritance #2308

@lolpack

Description

@lolpack

Describe the Bug

Pyrefly reports bad-override for a class inheriting from a mixin method using *args/**kwargs and a concrete base method with a concrete signature. Pyright accepts this pattern.

from typing import Any

class LogMixin:
    def execute(self, *args: Any, **kwargs: Any) -> Any:
        pass

class BaseExecutor:
    def execute(self, command: str) -> str:
        return command

class LoggedExecutor(LogMixin, BaseExecutor):
    def execute(self, command: str, log: bool = True) -> str:
        return command

This appears to be a false positive around override signature compatibility in MRO scenarios.

Sandbox Link (Pyrefly)

https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXAAlHAhgOwCYCMD2AHgHQAOAnksuAE74C2yALuaRJgObIT2n41NkAQUzkAOpgkBjKOjhxkAGXwcAshELtEE5LuTYYYZDEIwpAVyYwAFHBhQwAGmQAqdDQ5wUI8s5cuAawB3d09vUQBKZABaAD5hUW1MPRTkUjk4CWlZeWQAITkYAFFTCyZ%2BJJSDIxMzSxs7B2cpBnosbBQ4JhoouOQumkrU3RoYJnMaZJb6NpwszBkMpRUOGGwSuvKaa2U1DXZnArsNsv4Iod1q41L623snZGnZjv7u5ygVFAJ8KGQAXmQABUaOYYL14gMLqlRuNJo9Wu0QABfZwgdBSJgQABuMAAYtAYFQQBgcAQSBRkUA

Reference (Pyright)

https://pyright-play.net/?code=GYJw9gtgBALgngBwJYDsDmUkQWEMoCCKcAUCQMYA2AhgM61QAyYaAskgB6oBcJU-UACYBTYFGEdh5AK4xhAClrDKwADRQAVNRBpa3QsXUaNAawDu23fqJwAlFAC0APgNxeAj1AR1aZKj6gAITphAFFJGRhcdwERMQkpWQUlFXVySAhqFEF9WhgQe2coPJAYzygQYRhpEBQodIhM7L8aeiYWNGFBcMSokHlmNk5UdWClHsjcWzKhUXEIpMVlNXqMrJzi-PVKFn0AIzAwSigAXigAFRBpYUKXEpmPSura1cb1oA

Sandbox Link

No response

(Only applicable for extension issues) IDE Information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions