Skip to content

Exception: Could not find mutant for type error #541

Description

@nedbat

To reproduce:

% git clone https://github.com/nedbat/acidica
% cd acidica
% git checkout 3a142e473e319718edf42f514cbde304061d5b75
% uv venv -p 3.14
% source .venv/bin/activate
% uv sync
Resolved 29 packages in 8ms
warning: Skipping installation of entry points (`project.scripts`) for package `acidica` because this project is not packaged; to install entry points, set `tool.uv.package = true` or define a `build-system`
Prepared 4 packages in 217ms
Installed 27 packages in 77ms
 + ast-serialize==0.6.0
 + click==8.4.2
 + coverage==7.15.0
 + iniconfig==2.3.0
 + libcst==1.9.0
 + librt==0.13.0
 + linkify-it-py==2.1.0
 + markdown-it-py==4.2.0
 + mdit-py-plugins==0.6.1
 + mdurl==0.1.2
 + mutmut==3.6.0
 + mypy==2.3.0
 + mypy-extensions==1.1.0
 + packaging==26.2
 + pathspec==1.1.1
 + platformdirs==4.11.0
 + pluggy==1.6.0
 + pygments==2.20.0
 + pytest==9.1.1
 + pytest-cov==7.1.0
 + pyyaml==6.0.3
 + rich==15.0.0
 + setproctitle==1.3.7
 + textual==8.2.8
 + ty==0.0.58
 + typing-extensions==4.16.0
 + uc-micro-py==2.0.0

% uv pip install -e .
Resolved 1 package in 7ms
      Built acidica @ file:///private/tmp/acid2/acidica
Prepared 1 package in 792ms
Installed 1 package in 2ms
 + acidica==0.1.0 (from file:///private/tmp/acid2/acidica)

% pytest
====================================================================== test session starts =======================================================================
platform darwin -- Python 3.14.4, pytest-9.1.1, pluggy-1.6.0
rootdir: /private/tmp/acid2/acidica
configfile: pyproject.toml
plugins: cov-7.1.0
collected 140 items

tests/test_programs.py ................................................................................................................................... [ 93%]
.........                                                                                                                                                  [100%]

====================================================================== 140 passed in 0.12s =======================================================================

% mypy --strict src tests
Success: no issues found in 9 source files

% mutmut run
⠹ Generating mutants
    done in 6770ms (8 files mutated, 0 ignored, 0 unmodified)
⠙ Filtering mutations with type checker
Traceback (most recent call last):
  File "/private/tmp/acid2/acidica/.venv/bin/mutmut", line 10, in <module>
    sys.exit(cli())
             ~~~^^
  File "/private/tmp/acid2/acidica/.venv/lib/python3.14/site-packages/click/core.py", line 1569, in __call__
    return self.main(*args, **kwargs)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/private/tmp/acid2/acidica/.venv/lib/python3.14/site-packages/click/core.py", line 1490, in main
    rv = self.invoke(ctx)
  File "/private/tmp/acid2/acidica/.venv/lib/python3.14/site-packages/click/core.py", line 1970, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/private/tmp/acid2/acidica/.venv/lib/python3.14/site-packages/click/core.py", line 1353, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/acid2/acidica/.venv/lib/python3.14/site-packages/click/core.py", line 907, in invoke
    return callback(*args, **kwargs)
  File "/private/tmp/acid2/acidica/.venv/lib/python3.14/site-packages/mutmut/__main__.py", line 1002, in run
    _run(mutant_names, max_children)
    ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/acid2/acidica/.venv/lib/python3.14/site-packages/mutmut/__main__.py", line 1031, in _run
    mutants_caught_by_type_checker = filter_mutants_with_type_checker()
  File "/private/tmp/acid2/acidica/.venv/lib/python3.14/site-packages/mutmut/mutation/file_mutation.py", line 494, in filter_mutants_with_type_checker
    raise Exception(
    ...<3 lines>...
    )
Exception: Could not find mutant for type error /private/tmp/acid2/acidica/mutants/src/acidica/interpreter.py:892 (Cannot determine type of "subline").
Probably, a code mutation influenced types in unexpected locations.
If your project normally has no type errors and uses mypy/pyrefly, please file an issue with steps to reproduce on github.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions