class_docstr: Extension of the completer class with IPython-specific features
class_docstr_tok: ["Extension","of","the","completer","class","with","IPython-specific","features"]
docstr: Match named parameters (kwargs) of the last open function
docstr_tok: ["Match","named","parameters","(","kwargs",")","of","the","last","open","function"]
code: def python_func_kw_matches(self, text):
      """Match named parameters (kwargs) of the last open function"""
  
      if "." in text:  # a parameter cannot be dotted
          return []
      try:
          regexp = self.__funcParamsRegex
      except AttributeError:
          regexp = self.__funcParamsRegex = re.compile(
              r"""
                  '.*?(?<!\\)' |    # single quoted strings or
                  ".*?(?<!\\)" |    # double quoted strings or
                  \w+          |    # identifier
                  \S                # other characters
                  """,
              re.VERBOSE | re.DOTALL,
          )
      # 1. find the nearest identifier that comes before an unclosed
      # parenthesis before the cursor
      # e.g. for "foo (1+bar(x), pa<cursor>,a=1)", the candidate is "foo"
      tokens = regexp.findall(self.text_until_cursor)
      tokens.reverse()
      iterTokens = iter(tokens)
      openPar = 0
  
      for token in iterTokens:
          if token == ")":
              openPar -= 1
          elif token == "(":
              openPar += 1
              if openPar > 0:
                  # found the last unclosed parenthesis
                  break
      else:
          return []
      # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
      ids = []
      isId = re.compile(r"\w+$").match
  
      while True:
          try:
              ids.append(next(iterTokens))
              if not isId(ids[-1]):
                  ids.pop()
                  break
              if not next(iterTokens) == ".":
                  break
          except StopIteration:
              break
      # lookup the candidate callable matches either using global_matches
      # or attr_matches for dotted names
      if len(ids) == 1:
          callableMatches = self.global_matches(ids[0])
      else:
          callableMatches = self.attr_matches(".".join(ids[::-1]))
      argMatches = []
      for callableMatch in callableMatches:
          try:
              namedArgs = self._default_arguments(
                  eval(callableMatch, self.namespace)
              )
          except:
              continue
  
          for namedArg in namedArgs:
              if namedArg.startswith(text):
                  argMatches.append("%s=" % namedArg)
      return argMatches
  
imports: from __future__ import print_function
  import __main__
  import glob
  import inspect
  import itertools
  import keyword
  import os
  import re
  import sys
  import unicodedata
  import string
  import warnings
  from traitlets.config.configurable import Configurable
  from IPython.core.error import TryNext
  from IPython.core.inputsplitter import ESC_MAGIC
  from IPython.core.latex_symbols import latex_symbols, reverse_latex_symbol
  from IPython.utils import generics
  from IPython.utils.decorators import undoc
  from IPython.utils.dir2 import dir2, get_real_method
  from IPython.utils.process import arg_split
  from IPython.utils.py3compat import builtin_mod, string_types, PY3, cast_unicode_py2
  from traitlets import Bool, Enum, observe
label_desc: Use image node_id 12 for calling the IPCompleter obj's underlying member method code with example usage: obj.python_func_kw_matches(text) and returns: argMatches, list, list