Skip to content

INTERNALERROR: Unknown entry type returned: TraceLastReprEntry #154

Open
@filbranden

Description

@filbranden

I'm seeing INTERNALERROR: Unknown entry type returned: TraceLastReprEntry with a long long unreadable traceback when running tests for python-attrs/attrs that produce type checker failures.

This is the traceback of the exception in pytest:

INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/tmp-attrs/attrs/.tox/py312-tests/lib/python3.12/site-packages/xdist/workermanage.py", line 414, in process_from_remote
INTERNALERROR>     rep = self.config.hook.pytest_report_from_serializable(
INTERNALERROR>           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/tmp-attrs/attrs/.tox/py312-tests/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
INTERNALERROR>     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
INTERNALERROR>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/tmp-attrs/attrs/.tox/py312-tests/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
INTERNALERROR>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/tmp-attrs/attrs/.tox/py312-tests/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR>     raise exception.with_traceback(exception.__traceback__)
INTERNALERROR>   File "/tmp-attrs/attrs/.tox/py312-tests/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>           ^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/tmp-attrs/attrs/.tox/py312-tests/lib/python3.12/site-packages/_pytest/reports.py", line 460, in pytest_report_from_serializable
INTERNALERROR>     return TestReport._from_json(data)
INTERNALERROR>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/tmp-attrs/attrs/.tox/py312-tests/lib/python3.12/site-packages/_pytest/reports.py", line 226, in _from_json
INTERNALERROR>     kwargs = _report_kwargs_from_json(reportdict)
INTERNALERROR>              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/tmp-attrs/attrs/.tox/py312-tests/lib/python3.12/site-packages/_pytest/reports.py", line 593, in _report_kwargs_from_json
INTERNALERROR>     reprtraceback = deserialize_repr_traceback(
INTERNALERROR>                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/tmp-attrs/attrs/.tox/py312-tests/lib/python3.12/site-packages/_pytest/reports.py", line 578, in deserialize_repr_traceback
INTERNALERROR>     deserialize_repr_entry(x) for x in repr_traceback_dict["reprentries"]
INTERNALERROR>     ^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/tmp-attrs/attrs/.tox/py312-tests/lib/python3.12/site-packages/_pytest/reports.py", line 573, in deserialize_repr_entry
INTERNALERROR>     _report_unserialization_failure(entry_type, TestReport, reportdict)
INTERNALERROR>   File "/tmp-attrs/attrs/.tox/py312-tests/lib/python3.12/site-packages/_pytest/reports.py", line 241, in _report_unserialization_failure
INTERNALERROR>     raise RuntimeError(stream.getvalue())

It looks like deserialize_repr_entry in pytest code base makes a specific check for the entry type and only supports "ReprEntry" or "ReprEntryNative", otherwise it throws this RuntimeError.

It seems updating pytest_mypy_plugins/item.py to set repr_tb_entry = ReprEntry(...) also prevents the error from happening.

In order to reproduce this issue, clone the python-attrs/attrs repo, then modify tests/test_mypy.yml to introduce any typing error, then run tox or tox -e py312-tests (quicker), the error message is very long and almost impossible to read!

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions