dropbox / dropbox/pyannotate

ParseError: Invalid type comment: (__main__:f.<locals>.A) -> None

Open
#92 2 comments 1 reaction 0 assignees View on GitHub
bug
Dominant language
Python
Stars
1.4k
Forks
60
PR merge metrics
No merged PRs in 30d

Description

Given t-pyannotate.py:

```python
from pyannotate_runtime import collect_types

collect_types.init_types_collection()
collect_types.start()

def c(obj):
pass

def f():
class A:
pass

c(A())

f()

collect_types.stop()
collect_types.dump_stats("type_info.json")
```

Produces:

```json
[
{
"path": "t-pyannotate.py",
"line": 8,
"func_name": "c",
"type_comments": [
"(__main__:f..A) -> None"
],
"samples": 1
},
{
"path": "t-pyannotate.py",
"line": 12,
"func_name": "f",
"type_comments": [
"() -> None"
],
"samples": 1
},
{
"path": "t-pyannotate.py",
"line": 13,
"func_name": "A",
"type_comments": [
"() -> None"
],
"samples": 1
}
]
```

Running `pyannotate -w` then crashes:

```
Traceback (most recent call last):
File "…/Vcs/pytest/.venv/bin/pyannotate", line 11, in
load_entry_point('pyannotate', 'console_scripts', 'pyannotate')()
File "…/Vcs/pyannotate/pyannotate_tools/annotations/__main__.py", line 125, in main
data = generate_annotations_json_string(
File "…/Vcs/pyannotate/pyannotate_tools/annotations/main.py", line 60, in generate_annotations_json_string
signature = unify_type_comments(item.type_comments)
File "…/Vcs/pyannotate/pyannotate_tools/annotations/main.py", line 27, in unify_type_comments
arg_types, return_type = infer_annotation(type_comments)
File "…/Vcs/pyannotate/pyannotate_tools/annotations/infer.py", line 45, in infer_annotation
arg_types, return_type = parse_type_comment(comment)
File "…/Vcs/pyannotate/pyannotate_tools/annotations/parse.py", line 216, in parse_type_comment
return Parser(comment).parse()
File "…/Vcs/pyannotate/pyannotate_tools/annotations/parse.py", line 225, in __init__
self.tokens = tokenize(comment)
File "…/Vcs/pyannotate/pyannotate_tools/annotations/parse.py", line 193, in tokenize
raise ParseError(original)
pyannotate_tools.annotations.parse.ParseError: Invalid type comment: (__main__:f..A) -> None
```

This is likely due to the "" in there I guess?

pyannotate b7f96ca (current master)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.