docstr: :params bool attribute_lookup: Tell to logic if we're accessing the
      attribute or the contents of e.g. a function.
docstr_tok: [":","params","bool","attribute_lookup",":","Tell","to","logic","if","we","'re","accessing","the","attribute","or","the","contents","of","e.g",".","a","function","."]
code: def find(self, filters, attribute_lookup):
      """
      :params bool attribute_lookup: Tell to logic if we're accessing the
          attribute or the contents of e.g. a function.
      """
      names = self.filter_name(filters)
      if self._found_predefined_types is not None and names:
          check = flow_analysis.reachability_check(
              context=self._context,
              context_scope=self._context.tree_node,
              node=self._name,
          )
          if check is flow_analysis.UNREACHABLE:
              return ContextSet()
          return self._found_predefined_types
  
      types = self._names_to_types(names, attribute_lookup)
  
      if (
          not names
          and self._analysis_errors
          and not types
          and not (
              isinstance(self._name, tree.Name)
              and isinstance(self._name.parent.parent, tree.Param)
          )
      ):
          if isinstance(self._name, tree.Name):
              if attribute_lookup:
                  analysis.add_attribute_error(
                      self._name_context, self._context, self._name
                  )
              else:
                  message = (
                      "NameError: name '%s' is not defined."
                      % self._string_name
                  )
                  analysis.add(
                      self._name_context,
                      "name-error",
                      self._name,
                      message,
                  )
  
      return types
  
imports: from parso.python import tree
  from parso.tree import search_ancestor
  from jedi import debug
  from jedi import settings
  from jedi.evaluate.context import AbstractInstanceContext
  from jedi.evaluate import compiled
  from jedi.evaluate import analysis
  from jedi.evaluate import flow_analysis
  from jedi.evaluate.arguments import TreeArguments
  from jedi.evaluate import helpers
  from jedi.evaluate.context import iterable
  from jedi.evaluate.filters import get_global_filters, TreeNameDefinition
  from jedi.evaluate.base_context import ContextSet
  from jedi.parser_utils import is_scope, get_parent_scope
label_desc: Use image node_id 2 for calling the NameFinder obj's underlying member method code with example usage: obj.find(filters, attribute_lookup) and returns: types, self, ContextSet