Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto
#92 2 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
tooling

Línea de trabajo

Reproduce el fallo con el script proporcionado y pyannotate -w. Empieza en pyannotate_tools/annotations/parse.py, siguiendo tokenize y parse_type_comment a partir del traceback, e inspecciona cómo se gestiona el comentario de tipo <locals>. Se considera terminado cuando el ejemplo ya no produce ParseError al generar anotaciones.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug

Given t-pyannotate.py:

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:

[
    {
        "path": "t-pyannotate.py",
        "line": 8,
        "func_name": "c",
        "type_comments": [
            "(__main__:f.<locals>.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 <module>
    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.<locals>.A) -> None

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

pyannotate b7f96ca (current master)

Lenguaje dominante
Python
Estrellas
1.4k
Forks
59
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de dropbox/pyannotate

Todos los issues de dropbox/pyannotate

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.