Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue with Literal["$"] being converted #139

Closed
tungalbert99 opened this issue Dec 15, 2023 · 2 comments · Fixed by #142
Closed

Issue with Literal["$"] being converted #139

tungalbert99 opened this issue Dec 15, 2023 · 2 comments · Fixed by #142

Comments

@tungalbert99
Copy link

tungalbert99 commented Dec 15, 2023

Underneath the hood, the parser can't deal with special character Literals
Function def:

async def get_frame_from_stream(
    client: "AsyncRedis",  # type: ignore
    stream_name: str,
    last_id: int | Literal["$"] = "$",
):

Stack trace from log

A syntax error happened on medra_robotics/redis_client/redis_utils.py. This file cannot be formatted.
Check https://github.com/pydantic/bump-pydantic/issues/124 for more information.
Traceback (most recent call last):
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/bump_pydantic/main.py", line 182, in run_codemods
    output_tree = transformer.transform_module(input_tree)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/codemod/_codemod.py", line 108, in transform_module
    return self.transform_module_impl(tree_with_metadata)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/codemod/_visitor.py", line 32, in transform_module_impl
    return tree.visit(self)
           ^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/module.py", line 89, in visit
    result = super(Module, self).visit(visitor)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 218, in visit
    should_visit_children = visitor.on_visit(self)
                            ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/matchers/_visitors.py", line 506, in on_visit
    return CSTTransformer.on_visit(self, node)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_visitors.py", line 44, in on_visit
    retval = visit_func(node)
             ^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/codemod/visitors/_remove_imports.py", line 300, in visit_Module
    node.visit(visitor)
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/module.py", line 89, in visit
    result = super(Module, self).visit(visitor)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 218, in visit
    should_visit_children = visitor.on_visit(self)
                            ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/matchers/_visitors.py", line 713, in on_visit
    return CSTVisitor.on_visit(self, node)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_visitors.py", line 123, in on_visit
    retval = visit_func(node)
             ^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/codemod/visitors/_gather_unused_imports.py", line 71, in visit_Module
    node.visit(annotation_visitor)
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/module.py", line 89, in visit
    result = super(Module, self).visit(visitor)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/module.py", line 74, in _visit_and_replace_children
    body=visit_body_sequence(self, "body", self.body, visitor),
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 227, in visit_body_sequence
    return tuple(visit_body_iterable(parent, fieldname, children, visitor))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 193, in visit_body_iterable
    new_child = child.visit(visitor)
                ^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/statement.py", line 1809, in _visit_and_replace_children
    params=visit_required(self, "params", self.params, visitor),
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 81, in visit_required
    result = node.visit(visitor)
             ^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/expression.py", line 1978, in _visit_and_replace_children
    params=visit_sequence(self, "params", self.params, visitor),
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 177, in visit_sequence
    return tuple(visit_iterable(parent, fieldname, children, visitor))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 159, in visit_iterable
    new_child = child.visit(visitor)
                ^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/expression.py", line 1816, in _visit_and_replace_children
    annotation=visit_optional(self, "annotation", self.annotation, visitor),
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 110, in visit_optional
    result = node.visit(visitor)
             ^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/expression.py", line 1673, in _visit_and_replace_children
    annotation=visit_required(self, "annotation", self.annotation, visitor),
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 81, in visit_required
    result = node.visit(visitor)
             ^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/expression.py", line 1283, in _visit_and_replace_children
    right=visit_required(self, "right", self.right, visitor),
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 81, in visit_required
    result = node.visit(visitor)
             ^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/expression.py", line 1604, in _visit_and_replace_children
    slice=visit_sequence(self, "slice", self.slice, visitor),
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 177, in visit_sequence
    return tuple(visit_iterable(parent, fieldname, children, visitor))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 159, in visit_iterable
    new_child = child.visit(visitor)
                ^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/expression.py", line 1549, in _visit_and_replace_children
    slice=visit_required(self, "slice", self.slice, visitor),
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 81, in visit_required
    result = node.visit(visitor)
             ^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 227, in visit
    _CSTNodeSelfT, self._visit_and_replace_children(visitor)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/expression.py", line 1463, in _visit_and_replace_children
    value=visit_required(self, "value", self.value, visitor),
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/internal.py", line 81, in visit_required
    result = node.visit(visitor)
             ^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_nodes/base.py", line 218, in visit
    should_visit_children = visitor.on_visit(self)
                            ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/matchers/_visitors.py", line 713, in on_visit
    return CSTVisitor.on_visit(self, node)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_visitors.py", line 123, in on_visit
    retval = visit_func(node)
             ^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/codemod/visitors/_gather_string_annotation_names.py", line 65, in visit_SimpleString
    self.handle_any_string(node)
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/codemod/visitors/_gather_string_annotation_names.py", line 74, in handle_any_string
    mod = cst.parse_module(value)
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_parser/entrypoints.py", line 109, in parse_module
    result = _parse(
             ^^^^^^^
  File "/Users/alberttung/.pyenv/versions/3.11.4/envs/medra/lib/python3.11/site-packages/libcst/_parser/entrypoints.py", line 55, in _parse
    return parse(source_str)
           ^^^^^^^^^^^^^^^^^
libcst._exceptions.ParserSyntaxError: Syntax Error @ 1:1.
tokenizer error: '$' is not a valid character in this position
@Kludex
Copy link
Member

Kludex commented Dec 15, 2023

Yeah, we need to wrap the exception and present some more useful message.

@Kludex
Copy link
Member

Kludex commented Dec 27, 2023

There was already a wrapper, but the message was too verbose anyway. I've shrunk it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants