Skip to content

AttributeError: 'Module' object has no attribute 'doc_node' #2683

Open
@JCZuurmond

Description

@JCZuurmond

Astroid tries to get the doc_node on Module object while it does not exists. A safer implementation gets the attribute only when it exists, otherwise gets None.

InternalError: linting workflows(1234) task failed: 'Module' object has no attribute 'doc_node'
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/databricks/labs/ucx/source_code/python/python_infer.py", line 78, in _unsafe_infer_internal
    all_inferred = node.inferred()
                   ^^^^^^^^^^^^^^^
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/nodes/node_ng.py", line 584, in inferred
    return list(self.infer())
           ^^^^^^^^^^^^^^^^^^
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/nodes/node_ng.py", line 168, in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/decorators.py", line 86, in inner
    yield next(generator)
          ^^^^^^^^^^^^^^^
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/decorators.py", line 49, in wrapped
    for res in _func(node, context, **kwargs):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/nodes/node_classes.py", line 585, in _infer
    frame, stmts = self.lookup(self.name)
                   ^^^^^^^^^^^^^^^^^^^^^^
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/nodes/_base_nodes.py", line 277, in lookup
    return self.scope().scope_lookup(self, name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 1706, in scope_lookup
    return frame._scope_lookup(node, name, offset)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/nodes/scoped_nodes/mixin.py", line 91, in _scope_lookup
    return pscope.scope_lookup(node, name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 325, in scope_lookup
    return self, self.getattr(name)
                 ^^^^^^^^^^^^^^^^^^
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 355, in getattr
    result = [self.special_attributes.lookup(name)]
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/interpreter/objectmodel.py", line 132, in lookup
    return getattr(self, IMPL_PREFIX + name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/local_disk0/.ephemeral_nfs/cluster_libraries/python/lib/python3.11/site-packages/astroid/interpreter/objectmodel.py", line 203, in attr___doc__
    value=getattr(self._instance.doc_node, "value", None),
                  ^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Module' object has no attribute 'doc_node'

Originally raise on databrickslabs/ucx#3659

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions