def complete_base(prefix, line, start, end, ctx): """If the line is empty, complete based on valid commands, python names, and paths. If we are completing the first argument, complete based on valid commands and python names. """ if line.strip() == '': out = (complete_python(prefix, line, start, end, ctx) | complete_command(prefix, line, start, end, ctx)) paths = complete_path(prefix, line, start, end, ctx, False) return (out | paths[0]), paths[1] elif prefix == line: return (complete_python(prefix, line, start, end, ctx) | complete_command(prefix, line, start, end, ctx)) return set()
def complete_base(context: CompletionContext): """If the line is empty, complete based on valid commands, python names, and paths. If we are completing the first argument, complete based on valid commands and python names. """ out: tp.Set[Completion] = set() if context.command is None or context.command.arg_index != 0: # don't do unnecessary completions return out # get and unpack python completions python_comps = complete_python(context) or set() if isinstance(python_comps, cabc.Sequence): python_comps, python_comps_len = python_comps # type: ignore out.update(apply_lprefix(python_comps, python_comps_len)) else: out.update(python_comps) # add command completions out.update(complete_command(context.command)) # add paths, if needed if not context.command.prefix: path_comps, path_comp_len = contextual_complete_path(context.command, cdpath=False) out.update(apply_lprefix(path_comps, path_comp_len)) return out
def test_complete_python(code, exp): res = complete_python( CompletionContext(python=PythonContext(code, len(code), ctx={})) ) assert res and len(res) == 2 comps, _ = res assert exp in comps
def complete_base(prefix, line, start, end, ctx): """If the line is empty, complete based on valid commands, python names, and paths. If we are completing the first argument, complete based on valid commands and python names. """ if line.strip() and prefix != line: # don't do unnecessary completions return set() # get and unpack python completions python_comps = complete_python(prefix, line, start, end, ctx) if isinstance(python_comps, cabc.Sequence): python_comps, python_comps_len = python_comps else: python_comps_len = None # add command completions out = python_comps | complete_command(prefix, line, start, end, ctx) # add paths, if needed if line.strip() == "": paths = complete_path(prefix, line, start, end, ctx, False) return (out | paths[0]), paths[1] elif prefix == line: if python_comps_len is None: return out else: return out, python_comps_len return set()
def test_complete_python_ctx(): class A: def wow(): pass a = A() res = complete_python(CompletionContext(python=PythonContext("a.w", 2, ctx=locals()))) assert res and len(res) == 2 comps, _ = res assert "a.wow(" in comps
def complete_base(prefix, line, start, end, ctx): """If the line is empty, complete based on valid commands, python names, and paths. If we are completing the first argument, complete based on valid commands and python names. """ if line.strip() == "": out = complete_python(prefix, line, start, end, ctx) | complete_command( prefix, line, start, end, ctx ) paths = complete_path(prefix, line, start, end, ctx, False) return (out | paths[0]), paths[1] elif prefix == line: python_comps = complete_python(prefix, line, start, end, ctx) if isinstance(python_comps, cabc.Sequence): return ( python_comps[0] | complete_command(prefix, line, start, end, ctx), python_comps[1], ) else: return python_comps | complete_command(prefix, line, start, end, ctx) return set()
def complete_base(prefix, line, start, end, ctx): """If the line is empty, complete based on valid commands, python names, and paths. If we are completing the first argument, complete based on valid commands and python names. """ # get and unpack python completions python_comps = complete_python(prefix, line, start, end, ctx) if isinstance(python_comps, cabc.Sequence): python_comps, python_comps_len = python_comps else: python_comps_len = None # add command completions out = python_comps | complete_command(prefix, line, start, end, ctx) # add paths, if needed if line.strip() == "": paths = complete_path(prefix, line, start, end, ctx, False) return (out | paths[0]), paths[1] elif prefix == line: if python_comps_len is None: return out else: return out, python_comps_len return set()