pylint
pylint copied to clipboard
pyreverse -c option causes stack overflow
Bug description
I'm using pyreverse on one of my python project to generate the UML diagram of a specific class so i use the c option but it takes too long and memory usage get bigger and bigger and throw :
Fatal Python error: Cannot recover from stack overflow.
Current thread 0x000092b0 (most recent call first):
File "c:\python37\lib\site-packages\astroid\bases.py", line 134 in getattr
File "c:\python37\lib\site-packages\astroid\nodes\node_classes.py", line 1929 in getattr
File "c:\python37\lib\site-packages\astroid\decorators.py", line 34 in cached
File "C:\Users\cawoo\AppData\Roaming\Python\Python37\site-packages\wrapt\wrappers.py", line 606 in call
File "c:\python37\lib\site-packages\astroid\nodes\node_classes.py", line 1181 in _get_assign_nodes
File "c:\python37\lib\site-packages\astroid\decorators.py", line 40 in cached
File "C:\Users\cawoo\AppData\Roaming\Python\Python37\site-packages\wrapt\wrappers.py", line 606 in call
File "c:\python37\lib\site-packages\astroid\nodes_base_nodes.py", line 202 in
Configuration
No response
Command used
pyreverse -o pdf --class src.FL.SuperFrame ./src
Pylint output
Format png is not supported natively. Pyreverse will try to generate it using Graphviz...
parsing ./src\__init__.py...
parsing C:\Users\cawoo\OneDrive\Altys\LDACS\src\channel.py...
parsing C:\Users\cawoo\OneDrive\Altys\LDACS\src\FL.py...
parsing C:\Users\cawoo\OneDrive\Altys\LDACS\src\PHY_PARAM.py...
parsing C:\Users\cawoo\OneDrive\Altys\LDACS\src\utils.py...
parsing C:\Users\cawoo\OneDrive\Altys\LDACS\src\viterbi.py...
parsing C:\Users\cawoo\OneDrive\Altys\LDACS\src\__init__.py...
Fatal Python error: Cannot recover from stack overflow.
Current thread 0x000092b0 (most recent call first):
File "c:\python37\lib\site-packages\astroid\bases.py", line 134 in __getattr__
File "c:\python37\lib\site-packages\astroid\nodes\node_classes.py", line 1929 in __getattr__
File "c:\python37\lib\site-packages\astroid\decorators.py", line 34 in cached
File "C:\Users\cawoo\AppData\Roaming\Python\Python37\site-packages\wrapt\wrappers.py", line 606 in __call__
File "c:\python37\lib\site-packages\astroid\nodes\node_classes.py", line 1181 in _get_assign_nodes
File "c:\python37\lib\site-packages\astroid\decorators.py", line 40 in cached
File "C:\Users\cawoo\AppData\Roaming\Python\Python37\site-packages\wrapt\wrappers.py", line 606 in __call__
File "c:\python37\lib\site-packages\astroid\nodes\_base_nodes.py", line 202 in <genexpr>
File "c:\python37\lib\site-packages\astroid\nodes\_base_nodes.py", line 204 in _get_assign_nodes
File "c:\python37\lib\site-packages\astroid\decorators.py", line 40 in cached
File "C:\Users\cawoo\AppData\Roaming\Python\Python37\site-packages\wrapt\wrappers.py", line 606 in __call__
File "c:\python37\lib\site-packages\astroid\nodes\scoped_nodes\scoped_nodes.py", line 3080 in <genexpr>
File "c:\python37\lib\site-packages\astroid\nodes\scoped_nodes\scoped_nodes.py", line 3082 in _get_assign_nodes
File "c:\python37\lib\site-packages\astroid\decorators.py", line 40 in cached
File "C:\Users\cawoo\AppData\Roaming\Python\Python37\site-packages\wrapt\wrappers.py", line 606 in __call__
File "c:\python37\lib\site-packages\astroid\nodes\scoped_nodes\scoped_nodes.py", line 1444 in extra_decorators
File "c:\python37\lib\site-packages\astroid\decorators.py", line 86 in __get__
File "c:\python37\lib\site-packages\astroid\nodes\scoped_nodes\scoped_nodes.py", line 1477 in type
File "c:\python37\lib\site-packages\astroid\decorators.py", line 86 in __get__
File "c:\python37\lib\site-packages\astroid\protocols.py", line 359 in _arguments_infer_argname
File "c:\python37\lib\site-packages\astroid\inference.py", line 1063 in infer_assign
File "c:\python37\lib\site-packages\astroid\decorators.py", line 108 in wrapped
File "c:\python37\lib\site-packages\astroid\decorators.py", line 139 in raise_if_nothing_inferred
File "c:\python37\lib\site-packages\astroid\nodes\node_ng.py", line 182 in infer
File "c:\python37\lib\site-packages\astroid\bases.py", line 165 in _infer_stmts
File "c:\python37\lib\site-packages\astroid\decorators.py", line 108 in wrapped
File "c:\python37\lib\site-packages\astroid\decorators.py", line 139 in raise_if_nothing_inferred
File "c:\python37\lib\site-packages\astroid\nodes\node_ng.py", line 169 in infer
File "c:\python37\lib\site-packages\astroid\builder.py", line 227 in delayed_assattr
File "c:\python37\lib\site-packages\astroid\builder.py", line 157 in _post_build
File "c:\python37\lib\site-packages\astroid\builder.py", line 141 in string_build
File "c:\python37\lib\site-packages\astroid\builder.py", line 282 in parse
File "c:\python37\lib\site-packages\astroid\builder.py", line 424 in extract_node
File "c:\python37\lib\site-packages\astroid\brain\brain_numpy_ndarray.py", line 147 in infer_numpy_ndarray
File "c:\python37\lib\site-packages\astroid\inference_tip.py", line 45 in _inference_tip_cached
File "C:\Users\cawoo\AppData\Roaming\Python\Python37\site-packages\wrapt\wrappers.py", line 567 in __call__
File "c:\python37\lib\site-packages\astroid\nodes\node_ng.py", line 159 in infer
File "c:\python37\lib\site-packages\astroid\inference.py", line 255 in infer_call
File "c:\python37\lib\site-packages\astroid\decorators.py", line 108 in wrapped
File "c:\python37\lib\site-packages\astroid\decorators.py", line 139 in raise_if_nothing_inferred
File "c:\python37\lib\site-packages\astroid\nodes\node_ng.py", line 182 in infer
File "c:\python37\lib\site-packages\astroid\bases.py", line 165 in _infer_stmts
File "c:\python37\lib\site-packages\astroid\decorators.py", line 108 in wrapped
File "c:\python37\lib\site-packages\astroid\decorators.py", line 139 in raise_if_nothing_inferred
File "c:\python37\lib\site-packages\astroid\nodes\node_ng.py", line 169 in infer
File "c:\python37\lib\site-packages\pylint\pyreverse\utils.py", line 197 in get_annotation
File "c:\python37\lib\site-packages\pylint\pyreverse\utils.py", line 219 in infer_node
File "c:\python37\lib\site-packages\pylint\pyreverse\inspector.py", line 253 in handle_assignattr_type
File "c:\python37\lib\site-packages\pylint\pyreverse\inspector.py", line 184 in visit_classdef
File "c:\python37\lib\site-packages\pylint\pyreverse\utils.py", line 162 in visit
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 77 in add_class
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 113 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
File "c:\python37\lib\site-packages\pylint\pyreverse\diadefslib.py", line 119 in extract_classes
Expected behavior
return a pdf file of the UML diagram for the class SuperFrame
Pylint version
pylint 2.14.0
OS / Environment
Windows 11
Additional dependencies
No response
I think I face the same error with pylint 2.15.3
and astroid 2.12.10
.:
Here is a MRE using xarray library:
import xarray as xr
class A(xr.DataArray):
...
If this code is in a standalone file, say mre.py
, pylint runs fine (with the command pylint mre.py
).
However, if it's within a __init__.py
file or in a file imported in a __init__.py
, it crashes with the recursion error of @AnasTaherGit (with the command pylint my_lib/__init__.py
)