code: def _yield_abbreviations_for_parameter(param, kwargs):
      """Get an abbreviation for a function parameter."""
      name = param.name
      kind = param.kind
      ann = param.annotation
      default = param.default
      not_found = (name, empty, empty)
      if kind in (
          Parameter.POSITIONAL_OR_KEYWORD,
          Parameter.KEYWORD_ONLY,
      ):
          if name in kwargs:
              value = kwargs.pop(name)
          elif ann is not empty:
              warn(
                  "Using function annotations to implicitly specify interactive controls is deprecated. Use an explicit keyword argument for the parameter instead.",
                  DeprecationWarning,
              )
              value = ann
          elif default is not empty:
              value = default
          else:
              yield not_found
          yield (name, value, default)
      elif kind == Parameter.VAR_KEYWORD:
          # In this case name=kwargs and we yield the items in kwargs with their keys.
          for k, v in kwargs.copy().items():
              kwargs.pop(k)
              yield k, v, empty
  
imports: from __future__ import print_function
  from __future__ import division
  from inspect import getcallargs
  import sys
  from IPython.core.getipython import get_ipython
  from .None import ValueWidget, Text, FloatSlider, IntSlider, Checkbox, Dropdown, VBox, Button, DOMWidget, Output
  from IPython.display import display, clear_output
  from ipython_genutils.py3compat import string_types, unicode_type
  from traitlets import HasTraits, Any, Unicode, observe
  from numbers import Real, Integral
  from warnings import warn
label_desc: Use image node_id 5 for calling a global function with example usage: _yield_abbreviations_for_parameter(param, kwargs) without return types