dry-python/returns

Crash with mypy plugin on mypy 0.961

emosenkis opened this issue · 3 comments

Bug report

What's wrong

Traceback (most recent call last):
  File "mypy/checkexpr.py", line 3991, in accept
  File "mypy/nodes.py", line 1760, in accept
  File "mypy/checkexpr.py", line 305, in visit_call_expr
  File "mypy/checkexpr.py", line 383, in visit_call_expr_inner
  File "mypy/checkexpr.py", line 892, in check_call_expr_with_callee_type
  File "mypy/checkexpr.py", line 957, in check_call
  File "mypy/checkexpr.py", line 1085, in check_callable_call
  File "mypy/checkexpr.py", line 763, in apply_function_plugin
  File ".pyenv/versions/3.9.7/envs/venv/lib/python3.9/site-packages/returns/contrib/mypy/_features/partial.py", line 62, in analyze
    return _PartialFunctionReducer(
  File ".pyenv/versions/3.9.7/envs/venv/lib/python3.9/site-packages/returns/contrib/mypy/_features/partial.py", line 131, in new_partial
    fallback, intermediate = self._create_intermediate(case_function)
  File ".pyenv/versions/3.9.7/envs/venv/lib/python3.9/site-packages/returns/contrib/mypy/_features/partial.py", line 150, in _create_intermediate
    return intermediate, analyze_call(
  File ".pyenv/versions/3.9.7/envs/venv/lib/python3.9/site-packages/returns/contrib/mypy/_typeops/analtype.py", line 55, in analyze_call
    messages = checker.msg if show_errors else checker.msg.clean_copy()
AttributeError: 'MessageBuilder' object has no attribute 'clean_copy'

How is that should be

Don't use MessageBuilder.clean_copy (removed in python/mypy#12631)

System information

  • python version: 3.9

  • returns version: 0.19

  • mypy version: 0.961

  • hypothesis version (if any):

  • pytest version (if any):

Yes, this is a known issue. Please, use supported mypy version for now.
https://github.com/dry-python/returns/blob/master/pyproject.toml#L75

Is there a workaround, other than disabling the plugin?

Or is a fix allowing a later mypy version on the way?

(For me, not using latest mypy crashes mypy due to other bugs, so currently I'm unable to use the returns plugin. As a consequence I'm currently lacking much of the typing support that is critical to me.)

I will refactor our plugin to work with mypy@0.99

Plugin API is changing too fast :(