Repository: typeddjango/django-stubs

Issue:
mypy crash when .mypy_cache is present
## What's wrong
Under certain circumstances, a project with a typing error will produce correct mypy errors and hints when `.mypy_cache`  is not present but a stack trace if it is.

Here is a simplified reproduction repo demonstrating this behaviour: https://github.com/danifus/djstubs-reproduce2

- pip install `django` and `django-stubs`
- `cd` to directory containing `mypy.ini`
- run `mypy . --tb`
- run `mypy . --tb`

The first `mypy . --tb` produces:

```
second_app/models.py:10: error: Incompatible types in assignment (expression has type "str", variable has type "int")
Found 1 error in 1 file (checked 28 source files)
```

The second run produces:

```
./test_app/models.py:6: error: INTERNAL ERROR -- Please try using mypy master on Github:
https://mypy.rtfd.io/en/latest/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 0.770
Traceback (most recent call last):
  File "mypy/semanal.py", line 4679, in accept
  File "mypy/nodes.py", line 939, in accept
  File "mypy/semanal.py", line 1001, in visit_class_def
  File "mypy/semanal.py", line 1078, in analyze_class
  File "mypy/semanal.py", line 1087, in analyze_class_body_common
  File "mypy/semanal.py", line 1147, in apply_class_plugin_hooks
  File "<venv>/mypytest/lib/python3.7/site-packages/mypy_django_plugin/main.py", line 37, in transform_model_class
    process_model_class(ctx, django_context)
  File "<venv>/mypytest/lib/python3.7/site-packages/mypy_django_plugin/transformers/models.py", line 357, in process_model_class
    initializer_cls(ctx, django_context).run()
  File "<venv>/mypytest/lib/python3.7/site-packages/mypy_django_plugin/transformers/models.py", line 71, in run
    self.run_with_model_cls(model_cls)
  File "<venv>/mypytest/lib/python3.7/site-packages/mypy_django_plugin/transformers/models.py", line 231, in run_with_model_cls
    base_manager_info=manager_info)
  File "<venv>/mypytest/lib/python3.7/site-packages/mypy_django_plugin/transformers/models.py", line 186, in create_new_model_parametrized_manager
    method_node=sym.node)
  File "<venv>/mypytest/lib/python3.7/site-packages/mypy_django_plugin/lib/helpers.py", line 329, in copy_method_to_another_class
    arguments, return_type = build_unannotated_method_args(method_node)
  File "<venv>/mypytest/lib/python3.7/site-packages/mypy_django_plugin/lib/helpers.py", line 314, in build_unannotated_method_args
    for argument in method_node.arguments[1:]:
AttributeError: attribute 'arguments' of 'FuncItem' undefined
./test_app/models.py:6: : note: use --pdb to drop into pdb
```

This behaviour occurs if the error is in either `test_app/models.py` or `second_app/models.py` (it currently is only in `second_app/models.py`).

## How is that should be

Every run should produce the same (initial) output

## System information

- OS: mac
- `python` version: 3.7
- `django` version: 3.0.8
- `mypy` version: 0.770
- `django-stubs` version: 1.5



Discussion:
@danifus I've encountered the same problem, reinstalling both `django-stubs` and `mypy` worked for me, but I'll check your repo tomorrow and try to reproduce this bug.

Resolving patch:
diff --git a/mypy_django_plugin/lib/helpers.py b/mypy_django_plugin/lib/helpers.py
--- a/mypy_django_plugin/lib/helpers.py
+++ b/mypy_django_plugin/lib/helpers.py
@@ -311,7 +311,11 @@ def add_new_sym_for_info(info: TypeInfo, *, name: str, sym_type: MypyType) -> No
 
 def build_unannotated_method_args(method_node: FuncDef) -> Tuple[List[Argument], MypyType]:
     prepared_arguments = []
-    for argument in method_node.arguments[1:]:
+    try:
+        arguments = method_node.arguments[1:]
+    except AttributeError:
+        arguments = []
+    for argument in arguments:
         argument.type_annotation = AnyType(TypeOfAny.unannotated)
         prepared_arguments.append(argument)
     return_type = AnyType(TypeOfAny.unannotated)


Test patch: