Python shlex.shlex() Examples
The following are 30
code examples of shlex.shlex().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
shlex
, or try the search function
.
Example #1
Source File: configparser.py From attention-lvcsr with MIT License | 6 votes |
def parse_config_string(config_string, issue_warnings=True): """ Parses a config string (comma-separated key=value components) into a dict. """ config_dict = {} my_splitter = shlex.shlex(config_string, posix=True) my_splitter.whitespace = ',' my_splitter.whitespace_split = True for kv_pair in my_splitter: kv_pair = kv_pair.strip() if not kv_pair: continue kv_tuple = kv_pair.split('=', 1) if len(kv_tuple) == 1: if issue_warnings: TheanoConfigWarning.warn( ("Config key '%s' has no value, ignoring it" % kv_tuple[0]), stacklevel=1) else: k, v = kv_tuple # subsequent values for k will override earlier ones config_dict[k] = v return config_dict
Example #2
Source File: lib.py From click-completion with MIT License | 6 votes |
def single_quote(s): """Escape a string with single quotes in order to be parsed as a single element by shlex Parameters ---------- s : str The string to quote Returns ------- str The quoted string """ if not s: return "''" if find_unsafe(s) is None: return s # use single quotes, and put single quotes into double quotes # the string $'b is then quoted as '$'"'"'b' return "'" + s.replace("'", "'\"'\"'") + "'"
Example #3
Source File: lib.py From click-completion with MIT License | 6 votes |
def double_quote(s): """Escape a string with double quotes in order to be parsed as a single element by shlex Parameters ---------- s : str The string to quote Returns ------- str The quoted string """ if not s: return '""' if find_unsafe(s) is None: return s # use double quotes, and put double quotes into single quotes # the string $"b is then quoted as "$"'"'"b" return '"' + s.replace('"', '"\'"\'"') + '"'
Example #4
Source File: configparser.py From D-VAE with MIT License | 6 votes |
def parse_config_string(config_string, issue_warnings=True): """ Parses a config string (comma-separated key=value components) into a dict. """ config_dict = {} my_splitter = shlex.shlex(config_string, posix=True) my_splitter.whitespace = ',' my_splitter.whitespace_split = True for kv_pair in my_splitter: kv_pair = kv_pair.strip() if not kv_pair: continue kv_tuple = kv_pair.split('=', 1) if len(kv_tuple) == 1: if issue_warnings: TheanoConfigWarning.warn( ("Config key '%s' has no value, ignoring it" % kv_tuple[0]), stacklevel=1) else: k, v = kv_tuple # subsequent values for k will override earlier ones config_dict[k] = v return config_dict
Example #5
Source File: parsing.py From WebPocket with GNU General Public License v3.0 | 6 votes |
def tokenize(self, line: str) -> List[str]: """Lex a string into a list of tokens. Comments are removed, and shortcuts and aliases are expanded. Raises ValueError if there are unclosed quotation marks. """ # strip C-style comments # shlex will handle the python/shell style comments for us line = re.sub(self.comment_pattern, self._comment_replacer, line) # expand shortcuts and aliases line = self._expand(line) # split on whitespace lexer = shlex.shlex(line, posix=False) lexer.whitespace_split = True # custom lexing tokens = self._split_on_punctuation(list(lexer)) return tokens
Example #6
Source File: test_shlex.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def testQuote(self): safeunquoted = string.ascii_letters + string.digits + '@%_-+=:,./' unicode_sample = '\xe9\xe0\xdf' # e + acute accent, a + grave, sharp s unsafe = '"`$\\!' + unicode_sample self.assertEqual(shlex.quote(''), "''") self.assertEqual(shlex.quote(safeunquoted), safeunquoted) self.assertEqual(shlex.quote('test file name'), "'test file name'") for u in unsafe: self.assertEqual(shlex.quote('test%sname' % u), "'test%sname'" % u) for u in unsafe: self.assertEqual(shlex.quote("test%s'name'" % u), "'test%s'\"'\"'name'\"'\"''" % u) # Allow this test to be used with old shlex.py
Example #7
Source File: win32rcparser.py From ironpython2 with Apache License 2.0 | 6 votes |
def parseH(self, file): lex = shlex.shlex(file) lex.commenters = "//" token = " " while token is not None: token = lex.get_token() if token == "" or token is None: token = None else: if token=='define': n = lex.get_token() i = int(lex.get_token()) self.ids[n] = i if i in self.names: # Dupe ID really isn't a problem - most consumers # want to go from name->id, and this is OK. # It means you can't go from id->name though. pass # ignore AppStudio special ones #if not n.startswith("_APS_"): # print "Duplicate id",i,"for",n,"is", self.names[i] else: self.names[i] = n if self.next_id<=i: self.next_id = i+1
Example #8
Source File: cogapp.py From cog with MIT License | 6 votes |
def processFileList(self, sFileList): """ Process the files in a file list. """ flist = self.openInputFile(sFileList) lines = flist.readlines() flist.close() for l in lines: # Use shlex to parse the line like a shell. lex = shlex.shlex(l, posix=True) lex.whitespace_split = True lex.commenters = '#' # No escapes, so that backslash can be part of the path lex.escape = '' args = list(lex) if args: self.processArguments(args)
Example #9
Source File: win32rcparser.py From ironpython2 with Apache License 2.0 | 6 votes |
def currentQuotedString(self): # Handle quoted strings - pity shlex doesn't handle it. assert self.token.startswith('"'), self.token bits = [self.token] while 1: tok = self.getToken() if not tok.startswith('"'): self.ungetToken() break bits.append(tok) sval = "".join(bits)[1:-1] # Remove end quotes. # Fixup quotes in the body, and all (some?) quoted characters back # to their raw value. for i, o in ('""', '"'), ("\\r", "\r"), ("\\n", "\n"), ("\\t", "\t"): sval = sval.replace(i, o) return sval
Example #10
Source File: delegator.py From pipenv-sublime with MIT License | 6 votes |
def _expand_args(command): """Parses command strings and returns a Popen-ready list.""" # Prepare arguments. if isinstance(command, STR_TYPES): if sys.version_info[0] == 2: splitter = shlex.shlex(command.encode('utf-8')) elif sys.version_info[0] == 3: splitter = shlex.shlex(command) else: splitter = shlex.shlex(command.encode('utf-8')) splitter.whitespace = '|' splitter.whitespace_split = True command = [] while True: token = splitter.get_token() if token: command.append(token) else: break command = list(map(shlex.split, command)) return command
Example #11
Source File: lib.py From pipenv with MIT License | 6 votes |
def double_quote(s): """Escape a string with double quotes in order to be parsed as a single element by shlex Parameters ---------- s : str The string to quote Returns ------- str The quoted string """ if not s: return '""' if find_unsafe(s) is None: return s # use double quotes, and put double quotes into single quotes # the string $"b is then quoted as "$"'"'"b" return '"' + s.replace('"', '"\'"\'"') + '"'
Example #12
Source File: lib.py From pipenv with MIT License | 6 votes |
def single_quote(s): """Escape a string with single quotes in order to be parsed as a single element by shlex Parameters ---------- s : str The string to quote Returns ------- str The quoted string """ if not s: return "''" if find_unsafe(s) is None: return s # use single quotes, and put single quotes into double quotes # the string $'b is then quoted as '$'"'"'b' return "'" + s.replace("'", "'\"'\"'") + "'"
Example #13
Source File: delegator.py From pipenv with MIT License | 6 votes |
def _expand_args(command): """Parses command strings and returns a Popen-ready list.""" # Prepare arguments. if isinstance(command, STR_TYPES): if sys.version_info[0] == 2: splitter = shlex.shlex(command.encode("utf-8")) elif sys.version_info[0] == 3: splitter = shlex.shlex(command) else: splitter = shlex.shlex(command.encode("utf-8")) splitter.whitespace = "|" splitter.whitespace_split = True command = [] while True: token = splitter.get_token() if token: command.append(token) else: break command = list(map(shlex.split, command)) return command
Example #14
Source File: test_shlex.py From ironpython3 with Apache License 2.0 | 6 votes |
def testQuote(self): safeunquoted = string.ascii_letters + string.digits + '@%_-+=:,./' unicode_sample = '\xe9\xe0\xdf' # e + acute accent, a + grave, sharp s unsafe = '"`$\\!' + unicode_sample self.assertEqual(shlex.quote(''), "''") self.assertEqual(shlex.quote(safeunquoted), safeunquoted) self.assertEqual(shlex.quote('test file name'), "'test file name'") for u in unsafe: self.assertEqual(shlex.quote('test%sname' % u), "'test%sname'" % u) for u in unsafe: self.assertEqual(shlex.quote("test%s'name'" % u), "'test%s'\"'\"'name'\"'\"''" % u) # Allow this test to be used with old shlex.py
Example #15
Source File: configparser.py From msaf with MIT License | 6 votes |
def parse_config_string(config_string, issue_warnings=True): """ Parses a config string (comma-separated key=value components) into a dict. """ config_dict = {} my_splitter = shlex.shlex(config_string, posix=True) my_splitter.whitespace = ',' my_splitter.whitespace_split = True for kv_pair in my_splitter: kv_pair = kv_pair.strip() if not kv_pair: continue kv_tuple = kv_pair.split('=', 1) if len(kv_tuple) == 1: if issue_warnings: MsafConfigWarning.warn( ("Config key '%s' has no value, ignoring it" % kv_tuple[0]), stacklevel=1) else: k, v = kv_tuple # subsequent values for k will override earlier ones config_dict[k] = v return config_dict
Example #16
Source File: test_shlex.py From ironpython3 with Apache License 2.0 | 5 votes |
def splitTest(self, data, comments): for i in range(len(data)): l = shlex.split(data[i][0], comments=comments) self.assertEqual(l, data[i][1:], "%s: %s != %s" % (data[i][0], l, data[i][1:]))
Example #17
Source File: mce.py From GDMC with ISC License | 5 votes |
def prettySplit(command): cmdstring = " ".join(command) lex = shlex.shlex(cmdstring) lex.whitespace_split = True lex.whitespace += "()," command[:] = list(lex)
Example #18
Source File: test_shlex.py From ironpython3 with Apache License 2.0 | 5 votes |
def oldSplit(self, s): ret = [] lex = shlex.shlex(io.StringIO(s)) tok = lex.get_token() while tok: ret.append(tok) tok = lex.get_token() return ret
Example #19
Source File: fc_config.py From royal-chaos with MIT License | 5 votes |
def _parse_flink_line(line,final_flags): lexer=shlex.shlex(line,posix=True) lexer.whitespace_split=True t=lexer.get_token() tmp_flags=[] while t: t=_parse_flink_token(lexer,t,tmp_flags) final_flags.extend(tmp_flags) return final_flags
Example #20
Source File: SharPyShellPrompt.py From SharPyShell with GNU General Public License v3.0 | 5 votes |
def onecmd_custom(self, cmd, args): if cmd in self.modules_loaded_tree: shlex_obj = shlex.shlex(args, posix=False) shlex_obj.quotes = '\'' shlex_obj.whitespace_split = True shlex_obj.commenters = '' args = list(shlex_obj) args = normalize_args(args) parsed_response = self.modules_loaded[cmd].run(args) else: parsed_response = '"#' + cmd + '" Module not found.' return parsed_response
Example #21
Source File: dbcommands.py From litecli with BSD 3-Clause "New" or "Revised" License | 5 votes |
def read_script(cur, arg, **_): args = shlex.split(arg) if len(args) != 1: raise TypeError(".read accepts exactly one path") path = args[0] with open(path, "r") as f: script = f.read() cur.executescript(script) return [(None, None, None, "")]
Example #22
Source File: test_shlex.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def oldSplit(self, s): ret = [] lex = shlex.shlex(io.StringIO(s)) tok = lex.get_token() while tok: ret.append(tok) tok = lex.get_token() return ret
Example #23
Source File: parameterParser.py From BioQueue with Apache License 2.0 | 5 votes |
def parameter_string_to_list(par): import shlex parameter_string = shlex.shlex(par) parameter_string.quotes = '"' parameter_string.whitespace_split = True parameter_string.commenters = '' parameters = list(parameter_string) return parameters
Example #24
Source File: dbcommands.py From litecli with BSD 3-Clause "New" or "Revised" License | 5 votes |
def load_extension(cur, arg, **_): args = shlex.split(arg) if len(args) != 1: raise TypeError(".load accepts exactly one path") path = args[0] conn = cur.connection conn.enable_load_extension(True) conn.load_extension(path) return [(None, None, None, "")]
Example #25
Source File: decouple.py From python-decouple with MIT License | 5 votes |
def __call__(self, value): """The actual transformation""" transform = lambda s: self.cast(s.strip(self.strip)) splitter = shlex(value, posix=True) splitter.whitespace = self.delimiter splitter.whitespace_split = True return self.post_process(transform(s) for s in splitter)
Example #26
Source File: decouple.py From python-decouple with MIT License | 5 votes |
def __init__(self, cast=text_type, delimiter=',', strip=string.whitespace, post_process=list): """ Parameters: cast -- callable that transforms the item just before it's added to the list. delimiter -- string of delimiters chars passed to shlex. strip -- string of non-relevant characters to be passed to str.strip after the split. post_process -- callable to post process all casted values. Default is `list`. """ self.cast = cast self.delimiter = delimiter self.strip = strip self.post_process = post_process
Example #27
Source File: fc_config.py From 802.11ah-ns3 with GNU General Public License v2.0 | 5 votes |
def _parse_flink_line(line,final_flags): lexer=shlex.shlex(line,posix=True) lexer.whitespace_split=True t=lexer.get_token() tmp_flags=[] while t: t=_parse_flink_token(lexer,t,tmp_flags) final_flags.extend(tmp_flags) return final_flags
Example #28
Source File: parsing.py From WebPocket with GNU General Public License v3.0 | 5 votes |
def is_valid_command(self, word: str) -> Tuple[bool, str]: """Determine whether a word is a valid name for a command. Commands can not include redirection characters, whitespace, or termination characters. They also cannot start with a shortcut. If word is not a valid command, return False and error text This string is suitable for inclusion in an error message of your choice: valid, errmsg = statement_parser.is_valid_command('>') if not valid: errmsg = "Alias {}".format(errmsg) """ valid = False if not word: return False, 'cannot be an empty string' for (shortcut, _) in self.shortcuts: if word.startswith(shortcut): # Build an error string with all shortcuts listed errmsg = 'cannot start with a shortcut: ' errmsg += ', '.join(shortcut for (shortcut, _) in self.shortcuts) return False, errmsg errmsg = 'cannot contain: whitespace, quotes, ' errchars = [] errchars.extend(constants.REDIRECTION_CHARS) errchars.extend(self.terminators) errmsg += ', '.join([shlex.quote(x) for x in errchars]) match = self._command_pattern.search(word) if match: if word == match.group(1): valid = True errmsg = '' return valid, errmsg
Example #29
Source File: streaming.py From incubator-spot with Apache License 2.0 | 5 votes |
def _analyzer(line): ''' A lexical analyzer for simple shell-like syntaxes. Split given line into fields. :param line: Line to split. :returs : List of fields. :rtype : ``list`` ''' lex = shlex.shlex(line) lex.quotes = '"' lex.whitespace_split = True lex.commenters = '' return list(lex)
Example #30
Source File: lib.py From pipenv with MIT License | 5 votes |
def split_args(line): """Version of shlex.split that silently accept incomplete strings. Parameters ---------- line : str The string to split Returns ------- [str] The line split in separated arguments """ lex = shlex.shlex(line, posix=True) lex.whitespace_split = True lex.commenters = '' res = [] try: while True: res.append(next(lex)) except ValueError: # No closing quotation pass except StopIteration: # End of loop pass if lex.token: res.append(lex.token) return res