Skip to content

mypy doesn't understand @abc.abstractmethod on __getattr__ #10409

Closed
@hotpxl

Description

@hotpxl

Bug Report

mypy doesn't understand

    @abc.abstractmethod
    def __getattr__(self, name:str) -> Any:

and complains about missing attributes

To Reproduce

Run mypy on:

import abc
from typing import *

class CC(abc.ABC):
    @abc.abstractmethod
    def __getattr__(self, name:str) -> Any:
        ...

def foo(c: CC) -> None:
    print(c.hello)

Expected Behavior

mypy shouldn't complain about attribute "hello" because I've overridden __getattr__. mypy exhibits the correct behavior when the @abc.abstractmethod decorator is removed.

Actual Behavior

mypy complains that main.py:11: error: "CC" has no attribute "hello". But if I comment out @abc.abstractmethod mypy will not complain.

Your Environment

  • Mypy version used: mypy 0.820+dev.8bc1115a7469ac4702d29da87acf5831c696d007 (just pip installed from git)
  • Mypy command-line flags: mypy main.py
  • Mypy configuration options from mypy.ini (and other config files): None
  • Python version used: 3.7.3
  • Operating system and version: Debian GNU/Linux 10

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugmypy got something wrong

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions