def get_parsed_args(self, comp_words): """ gets the parsed args from a patched parser """ active_parsers = self._patch_argument_parser() parsed_args = argparse.Namespace() self.completing = True if USING_PYTHON2: # Python 2 argparse only properly works with byte strings. comp_words = [ensure_bytes(word) for word in comp_words] try: stderr = sys.stderr sys.stderr = io.open(os.devnull, "w") active_parsers[0].parse_known_args(comp_words, namespace=parsed_args) sys.stderr.close() sys.stderr = stderr except BaseException: pass self.completing = False return parsed_args
def run_completer(self, parser, command, point=None, completer=autocomplete, **kwargs): command = ensure_str(command) if point is None: point = str(len(command)) with TemporaryFile() as t: os.environ["COMP_LINE"] = ensure_bytes(command) if USING_PYTHON2 else command os.environ["COMP_POINT"] = point self.assertRaises(SystemExit, completer, parser, output_stream=t, exit_method=sys.exit, **kwargs) t.seek(0) return t.read().decode(sys_encoding).split(IFS)
def run_completer(self, parser, command, point=None, **kwargs): command = ensure_str(command) if point is None: # Adjust point for wide chars point = str(len(command.encode(sys_encoding))) with TemporaryFile() as t: os.environ["COMP_LINE"] = ensure_bytes(command) if USING_PYTHON2 else command os.environ["COMP_POINT"] = point os.environ["_ARGCOMPLETE_COMP_WORDBREAKS"] = '"\'@><=;|&(:' self.assertRaises(SystemExit, autocomplete, parser, output_stream=t, exit_method=sys.exit, **kwargs) t.seek(0) return t.read().decode(sys_encoding).split(IFS)
def get_parsed_args(self, comp_words): """ gets the parsed args from a patched parser """ active_parsers = self._patch_argument_parser() parsed_args = argparse.Namespace() self.completing = True if USING_PYTHON2: # Python 2 argparse only properly works with byte strings. comp_words = [ensure_bytes(word) for word in comp_words] try: active_parsers[0].parse_known_args(comp_words, namespace=parsed_args) except BaseException: # pylint: disable=broad-except pass self.completing = False return parsed_args