pydantic / bump-pydantic

Convert Pydantic from V1 to V2 ♻
MIT License
304 stars 24 forks source link

Raising cryptic error message: `parser error: error at 1:5: expected NAME class ^` #79

Closed EricKolibacz closed 1 year ago

EricKolibacz commented 1 year ago

Description

I would like to run bump-pydantic on the repository I am working on. After running it on the repository (.) I receive following error (truncated because of duplicates):

An error happened on v1/annotation/classes.py.
Traceback (most recent call last):
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/bump_pydantic/main.py", line 126, in run_codemods
    output_tree = transformer.transform_module(input_tree)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/codemod/_codemod.py", line 108, in transform_module
    return self.transform_module_impl(tree_with_metadata)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/codemod/_visitor.py", line 32, in transform_module_impl
    return tree.visit(self)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/module.py", line 90, in visit
    result = super(Module, self).visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 218, in visit
    should_visit_children = visitor.on_visit(self)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/matchers/_visitors.py", line 511, in on_visit
    return CSTTransformer.on_visit(self, node)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_visitors.py", line 44, in on_visit
    retval = visit_func(node)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/codemod/visitors/_remove_imports.py", line 300, in visit_Module
    node.visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/module.py", line 90, in visit
    result = super(Module, self).visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 218, in visit
    should_visit_children = visitor.on_visit(self)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/matchers/_visitors.py", line 718, in on_visit
    return CSTVisitor.on_visit(self, node)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_visitors.py", line 123, in on_visit
    retval = visit_func(node)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/codemod/visitors/_gather_unused_imports.py", line 71, in visit_Module
    node.visit(annotation_visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/module.py", line 90, in visit
    result = super(Module, self).visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/module.py", line 74, in _visit_and_replace_children
    body=visit_body_sequence(self, "body", self.body, visitor),
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 227, in visit_body_sequence
    return tuple(visit_body_iterable(parent, fieldname, children, visitor))
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 193, in visit_body_iterable
    new_child = child.visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/statement.py", line 1931, in _visit_and_replace_children
    body=visit_required(self, "body", self.body, visitor),
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 81, in visit_required
    result = node.visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/statement.py", line 697, in _visit_and_replace_children
    body=visit_body_sequence(self, "body", self.body, visitor),
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 227, in visit_body_sequence
    return tuple(visit_body_iterable(parent, fieldname, children, visitor))
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 193, in visit_body_iterable
    new_child = child.visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/statement.py", line 442, in _visit_and_replace_children
    body=visit_sequence(self, "body", self.body, visitor),
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 177, in visit_sequence
    return tuple(visit_iterable(parent, fieldname, children, visitor))
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 159, in visit_iterable
    new_child = child.visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/statement.py", line 1542, in _visit_and_replace_children
    annotation=visit_required(self, "annotation", self.annotation, visitor),
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 81, in visit_required
    result = node.visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/expression.py", line 1673, in _visit_and_replace_children
    annotation=visit_required(self, "annotation", self.annotation, visitor),
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 81, in visit_required
    result = node.visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/expression.py", line 1604, in _visit_and_replace_children
    slice=visit_sequence(self, "slice", self.slice, visitor),
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 177, in visit_sequence
    return tuple(visit_iterable(parent, fieldname, children, visitor))
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 159, in visit_iterable
    new_child = child.visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/expression.py", line 1549, in _visit_and_replace_children
    slice=visit_required(self, "slice", self.slice, visitor),
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 81, in visit_required
    result = node.visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/expression.py", line 1463, in _visit_and_replace_children
    value=visit_required(self, "value", self.value, visitor),
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/internal.py", line 81, in visit_required
    result = node.visit(visitor)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_nodes/base.py", line 218, in visit
    should_visit_children = visitor.on_visit(self)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/matchers/_visitors.py", line 718, in on_visit
    return CSTVisitor.on_visit(self, node)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_visitors.py", line 123, in on_visit
    retval = visit_func(node)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/codemod/visitors/_gather_string_annotation_names.py", line 65, in visit_SimpleString
    self.handle_any_string(node)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/codemod/visitors/_gather_string_annotation_names.py", line 74, in handle_any_string
    mod = cst.parse_module(value)
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_parser/entrypoints.py", line 109, in parse_module
    result = _parse(
  File "/home/XXX/.cache/pypoetry/virtualenvs/models-fO5v81y7-py3.8/lib/python3.8/site-packages/libcst/_parser/entrypoints.py", line 55, in _parse
    return parse(source_str)
libcst._exceptions.ParserSyntaxError: Syntax Error @ 1:1.
parser error: error at 1:5: expected NAME

class
^
...

I can get anything from the error message: what does it refer to?

I was looking at the libcst library issues too, but couldn't find anything related to that issue neither.

Steps to reproduce

Versions:

Acceptance Criteria

Kludex commented 1 year ago

It breaks on https://gitlab.com/empaia/services/models/-/blob/main/v1/annotation/classes.py#L38...

Nothing that can be done, and I would say it even makes sense for LibCST to fail in that way with Literal["class"], since class is a reserved keyword.