Skip to content

Mypy crash on master with property alias with setters #19572

@Avasam

Description

@Avasam

Crash Report

Running latest mypy master on typeshed's openpyxl stubs with property aliases can crash

Traceback

stubs\openpyxl\openpyxl\worksheet\_write_only.pyi:13: error: INTERNAL ERROR -- Please try using mypy 
master on GitHub:
https://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 1.18.0+dev.e8147f2bdcd8899109fe1a9cffc770c436de95dc
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Scripts\mypy.exe\__main__.py", line 10, in <module>
    sys.exit(console_entry())
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\__main__.py", line 15, in console_entry
    main()
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\main.py", line 127, in main
    res, messages, blockers = run_build(sources, options, fscache, t0, stdout, stderr)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\main.py", line 211, in run_build
    res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\build.py", line 191, in build
    result = _build(
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\build.py", line 267, in _build
    graph = dispatch(sources, manager, stdout)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\build.py", line 2939, in 
dispatch
    process_graph(graph, manager)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\build.py", line 3337, in 
process_graph
    process_stale_scc(graph, scc, manager)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\build.py", line 3438, in 
process_stale_scc
    graph[id].type_check_first_pass()
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\build.py", line 2311, in 
type_check_first_pass
    self.type_checker().check_first_pass()
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checker.py", line 483, in check_first_pass
    self.accept(d)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checker.py", line 594, in accept
    stmt.accept(self)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\nodes.py", line 1251, in 
accept
    return visitor.visit_class_def(self)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checker.py", line 2598, in visit_class_def
    self.accept(defn.defs)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checker.py", line 594, in accept
    stmt.accept(self)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\nodes.py", line 1332, in 
accept
    return visitor.visit_block(self)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checker.py", line 3059, in visit_block
    self.accept(s)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checker.py", line 594, in accept
    stmt.accept(self)
    ~~~~~~~~~~~^^^^^^
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\nodes.py", line 1419, in 
accept
    return visitor.visit_assignment_stmt(self)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checker.py", line 3110, in visit_assignment_stmt
    self.check_assignment(s.lvalues[-1], s.rvalue, s.type is None, s.new_syntax)
    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checker.py", line 3337, in check_assignment
    self.check_compatibility_all_supers(lvalue, rvalue)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checker.py", line 3471, in check_compatibility_all_supers
    lvalue_type, _ = self.node_type_from_base(lvalue_node.name, lvalue_node.info, lvalue)
                     ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checker.py", line 3617, in node_type_from_base
    base_type = analyze_instance_member_access(name, instance, mx, base)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checkmember.py", line 386, in analyze_instance_member_access
    return analyze_member_var_access(name, typ, info, mx)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checkmember.py", line 568, in analyze_member_var_access
    return analyze_var(name, v, itype, mx, implicit=implicit, is_trivial_self=is_trivial_self)       
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checkmember.py", line 912, in analyze_var
    item = expand_and_bind_callable(p_ct, var, itype, name, mx, is_trivial_self)
  File "E:\Users\Avasam\Documents\Git\typeshed\.venv\Lib\site-packages\mypy\checkmember.py", line 968, in expand_and_bind_callable
    assert isinstance(expanded, CallableType)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError:

To Reproduce

  1. Fork https://github.com/Avasam/typeshed/tree/stubtest-property-alias
  2. Install mypy from master
    • uv venv
    • uv pip install -r .\requirements-tests.txt
    • uv pip install git+https://github.com/python/mypy
  3. Run mypy: uv run mypy ./stubs/openpyxl --show-traceback

For reference, this is the failing stub. Note that the error is on the first property alias that has a setter.

from openpyxl import _Decodable
from openpyxl.workbook.child import _WorkbookChild
from openpyxl.workbook.workbook import Workbook
from openpyxl.worksheet.worksheet import Worksheet

class WriteOnlyWorksheet(_WorkbookChild):
    mime_type = Worksheet.mime_type
    add_chart = Worksheet.add_chart
    add_image = Worksheet.add_image
    add_table = Worksheet.add_table
    tables = Worksheet.tables
    print_titles = Worksheet.print_titles
    print_title_cols = Worksheet.print_title_cols  # error: INTERNAL ERROR
    print_title_rows = Worksheet.print_title_rows
    freeze_panes = Worksheet.freeze_panes
    print_area = Worksheet.print_area
    sheet_view = Worksheet.sheet_view
    def __init__(self, parent: Workbook | None, title: str | _Decodable | None) -> None: ...
    @property
    def closed(self) -> bool: ...
    def close(self) -> None: ...
    def append(self, row) -> None: ...

Your Environment

  • Mypy version used: mypy 1.18.0+dev.e8147f2bdcd8899109fe1a9cffc770c436de95dc (compiled: no)
  • Mypy command-line flags: None
  • Mypy configuration options from mypy.ini (and other config files): None
  • Python version used: Python 3.13.1
  • Operating system and version: Windows 10 Version 10.0.19045 Build 19045

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions