Skip to content

[1.19 regression] [mypyc] generator → AssertionError #20341

Description

@mr-c

Crash Report

Running mypyc on cwltool crashes with mypy 1.19; this didn't happen in previous versions.

Traceback

with compiled mypy (from PyPI) there is no traceback:

Traceback (most recent call last):
assertion_error.py:3: AssertionError: 

But by installing with pip install mypy --no-binary :all: we get

$ mypyc assertion_error.py 
Traceback (most recent call last):
  File "/home/michael/cwltool_main/mypyc-test/build/setup.py", line 6, in <module>
    ext_modules=mypycify(
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/build.py", line 635, in mypycify
    groups, group_cfilenames = mypyc_build(
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/build.py", line 514, in mypyc_build
    group_cfiles, ops_text = generate_c(
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/build.py", line 312, in generate_c
    modules, ctext, mapper = emitmodule.compile_modules_to_c(
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/codegen/emitmodule.py", line 458, in compile_modules_to_c
    modules = compile_modules_to_ir(result, mapper, compiler_options, errors)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/codegen/emitmodule.py", line 298, in compile_modules_to_ir
    scc_ir = compile_scc_to_ir(trees, result, mapper, compiler_options, errors)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/codegen/emitmodule.py", line 236, in compile_scc_to_ir
    modules = build_ir(scc, result.graph, result.types, mapper, compiler_options, errors)
  File "/home/michael/.pyenv/versions/3.13.2/lib/python3.13/contextlib.py", line 85, in inner
    return func(*args, **kwds)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/main.py", line 113, in build_ir
    transform_mypy_file(builder, module)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/main.py", line 159, in transform_mypy_file
    builder.accept(node)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/builder.py", line 293, in accept
    node.accept(self.visitor)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypy/nodes.py", line 1660, in accept
    return visitor.visit_assignment_stmt(self)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/visitor.py", line 203, in visit_assignment_stmt
    transform_assignment_stmt(self.builder, stmt)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/statement.py", line 240, in transform_assignment_stmt
    rvalue_reg = builder.accept(stmt.rvalue)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/builder.py", line 279, in accept
    res = node.accept(self.visitor)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypy/nodes.py", line 2738, in accept
    return visitor.visit_generator_expr(self)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/visitor.py", line 330, in visit_generator_expr
    return transform_generator_expr(self.builder, expr)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/expression.py", line 1100, in transform_generator_expr
    return builder.primitive_op(iter_op, [translate_list_comprehension(builder, o)], o.line)
                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/for_helpers.py", line 282, in translate_list_comprehension
    val = sequence_from_generator_preallocate_helper(
        builder,
    ...<2 lines>...
        set_item_op=new_list_set_item_op,
    )
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/for_helpers.py", line 269, in sequence_from_generator_preallocate_helper
    for_loop_helper_with_index(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^
        builder, gen.indices[0], sequence_expr, sequence, set_item, line, length
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/for_helpers.py", line 176, in for_loop_helper_with_index
    target_type = builder.get_sequence_type(expr)
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/builder.py", line 972, in get_sequence_type
    return self.get_sequence_type_from_type(self.types[expr])
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/irbuild/builder.py", line 998, in get_sequence_type_from_type
    return RUnion.make_simplified_union(list(rtypes))
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/home/michael/cwltool_main/env3.13.2/lib/python3.13/site-packages/mypyc/ir/rtypes.py", line 976, in make_simplified_union
    assert items
           ^^^^^
assertion_error.py:3: AssertionError:

To Reproduce
Checkout common-workflow-language/cwltool#2185 and run tox -e py313-mypy.

The line where that crashes:

https://github.com/common-workflow-language/cwltool/blob/f1661438c07671b4738b1cad88c58b80541a76af/cwltool/workflow_job.py#L754

Here's a reduced reproducer:

from collections.abc import Generator
from typing import Optional, Union
jobs: Generator[Optional[str], None, None] = (_ for _ in ())

print(jobs)

Your Environment

  • Mypy version used: 1.19.0
  • Mypy command-line flags:
  • Mypy configuration options from mypy.ini (and other config files): None
  • Python version used: 3.13.2
  • Operating system and version: Debian Linux stable 13.2

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions