code: def lookup_qualified_name(self, qname):
      # ExprNode.as_cython_attribute generates qnames and we untangle it here...
      name_path = qname.split(".")
      scope = self
      while len(name_path) > 1:
          scope = scope.lookup_here(name_path[0])
          if scope:
              scope = scope.as_module
          del name_path[0]
          if scope is None:
              return None
      else:
          return scope.lookup_here(name_path[0])
  
file_path: catboost/contrib/tools/cython/Cython/Compiler/CythonScope.py
imports: from __future__ import absolute_import
  from .Symtab import ModuleScope
  from .PyrexTypes import *
  from .UtilityCode import CythonUtilityCode
  from .Errors import error
  from .Scanning import StringSourceDescriptor
  from .None import MemoryView
label_desc: Use image node_id 7 for calling the CythonScope obj's underlying member method code with example usage: obj.lookup_qualified_name(qname) and returns: scope, None