Skip to content

Reassigned @property is typed as Callable #13975

Closed

Description

@Avasam

Bug Report

Mypy seems to forget about the @property decorator if the property is aliased.

To Reproduce

class MyClass:
    def error(self) -> bool:
        # Incompatible return value type (got "Callable[[], bool]", expected "bool")  [return-value]
        return self.prop_alias

    def works(self) -> bool:
        # No error
        return self.prop

    @property
    def prop(self) -> bool:
        return True

    prop_alias = prop


some_boolean: bool

instance = MyClass()
# Incompatible types in assignment (expression has type "Callable[[], bool]", variable has type "bool")  [assignment]
some_boolean = instance.prop_alias
# No error
some_boolean = instance.prop

Expected Behavior

prop_alias should be usable as a boolean, just like prop

Actual Behavior

prop_alias is seen as a Callable

Your Environment

  • Mypy version used: 0.982 (compiled: yes)
  • Mypy command-line flags: None
  • Mypy configuration options from mypy.ini (and other config files):
[mypy]
show_error_codes = True
strict = False
namespace_packages = True
  • Python version used: 3.9.13

I'm not sure if this is related to #2563 and #11619

Activity

  1. changed the title [-]`@property` alias is typed as `Callable`[/-] [+]Reassigend `@property` is typed as `Callable`[/+] on Nov 9, 2022
  2. changed the title [-]Reassigend `@property` is typed as `Callable`[/-] [+]Reassigned `@property` is typed as `Callable`[/+] on Nov 9, 2022
  3. niklasmohrin commented on Jan 16, 2023

    @niklasmohrin

    Same behavior on

    $ mypy --version
    mypy 0.991 (compiled: no)
    $ python --version
    Python 3.10.9

    without config. Result:

    class Foo:
        @property
        def bar(self):
            return 42
    
        baz = bar
    
    x: int = Foo().bar  # works
    # x: int = Foo().baz  # error: Incompatible types in assignment (expression has type "Callable[[], Any]", variable has type "int")  [assignment]
  4. finite-state-machine commented on Jan 26, 2024

    @finite-state-machine

    Issue is confirmed to affect both 1.8 and master.
    mypy-play.net gist

  5. finite-state-machine commented on Jan 26, 2024

    @finite-state-machine

    This might be the same as #6700.

  6. Avasam commented on Jan 26, 2024

    @Avasam
    SponsorContributorAuthor

    This might be the same as #6700.

    You are right. Closing as duplicate

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 wrong

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions