docs: def _extract_from_toolkit(args):
      """
      Look at all the modules in opt/python/streams (opt/python/streams/*.py)
      and extract any spl decorated function as an operator.
      """
  
      extractor = _Extractor(args)
      if extractor._cmd_args.verbose:
          print("spl-python-extract:", __version__)
          print("Topology toolkit location:", _topology_tk_dir())
  
      tk_dir = extractor._tk_dir
  
      tk_streams = os.path.join(tk_dir, 'opt', 'python', 'streams')
      if not os.path.isdir(tk_streams) or not fnmatch.filter(os.listdir(tk_streams), '*.py'):
          # Nothing to do for Python extraction
          extractor._make_toolkit()
          return
  
      lf = os.path.join(tk_streams, '.lockfile')
      with  open(lf, 'w') as lfno:
          fcntl.flock(lfno, fcntl.LOCK_EX)
  
          tk_idx = os.path.join(tk_dir, 'toolkit.xml')
          tk_time = os.path.getmtime(tk_idx) if os.path.exists(tk_idx) else None
          changed = False if tk_time else True
          if tk_time:
              for mf in glob.glob(os.path.join(tk_streams, '*.py')):
                 if os.path.getmtime(mf) >= tk_time:
                     changed = True
                     break
  
          if changed:
              path_items = _setup_path(tk_dir, tk_streams)
  
              for mf in glob.glob(os.path.join(tk_streams, '*.py')):
                  print('Checking ', mf, 'for operators')
                  name  = inspect.getmodulename(mf)
                  dynm = imp.load_source(name, mf)
                  streams_python_file = inspect.getsourcefile(dynm)
                  extractor._process_operators(dynm, name, streams_python_file, inspect.getmembers(dynm, inspect.isfunction))
                  extractor._process_operators(dynm, name, streams_python_file, inspect.getmembers(dynm, inspect.isclass))
  
              langList = extractor._copy_globalization_resources()
              if extractor._cmd_args.verbose:
                  print("Available languages for TopologySplpy resource:", langList)
              extractor._setup_info_xml(langList)
  
              extractor._make_toolkit()
  
              _reset_path(path_items)
              fcntl.flock(lfno, fcntl.LOCK_UN)