-
-
Notifications
You must be signed in to change notification settings - Fork 305
Open
Description
Steps to reproduce
The following code triggers a ValueError
in astroid:
class c(c&()):
_
class aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(c&()):
_
This bug was discovered by OSS-Fuzz:
https://issues.oss-fuzz.com/issues/423673973 (report not public yet)
Current behavior
[...snip...]
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "pylint/pylint/lint/pylinter.py", line 994, in get_ast
return MANAGER.ast_from_file(filepath, modname, source=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "astroid/astroid/manager.py", line 165, in ast_from_file
return AstroidBuilder(self).file_build(filepath, modname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "astroid/astroid/builder.py", line 145, in file_build
return self._post_build(module, builder, encoding)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "astroid/astroid/builder.py", line 173, in _post_build
module = self._manager.visit_transforms(module)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "astroid/astroid/manager.py", line 129, in visit_transforms
return self._transform.visit(node)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "astroid/astroid/transforms.py", line 162, in visit
return self._visit(node)
^^^^^^^^^^^^^^^^^
File "astroid/astroid/transforms.py", line 84, in _visit
visited = self._visit_generic(value)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "astroid/astroid/transforms.py", line 112, in _visit_generic
return [self._visit_generic(child) for child in node]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "astroid/astroid/transforms.py", line 112, in <listcomp>
return [self._visit_generic(child) for child in node]
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "astroid/astroid/transforms.py", line 123, in _visit_generic
f"Astroid was unable to transform {node}.\n"
File "astroid/astroid/nodes/node_ng.py", line 201, in __str__
lines = pprint.pformat(value, indent=2, width=width).splitlines(True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "~/.local/share/uv/python/cpython-3.11.13-linux-x86_64-gnu/lib/python3.11/pprint.py", line 60, in pformat
return PrettyPrinter(indent=indent, width=width, depth=depth,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "~/.local/share/uv/python/cpython-3.11.13-linux-x86_64-gnu/lib/python3.11/pprint.py", line 142, in __init__
raise ValueError('width must be != 0')
ValueError: width must be != 0
Expected behavior
No crash
Version
Metadata
Metadata
Assignees
Labels
No labels