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)