From aa655b3a8e8607c71ee801dfac8e10486cdb6305 Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Mon, 9 Jan 2017 16:46:04 +0000 Subject: [PATCH] Fixes #29133: clarified shlex documentation. --- Doc/library/shlex.rst | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/Doc/library/shlex.rst b/Doc/library/shlex.rst index 1a89bf6041..4926f04d42 100644 --- a/Doc/library/shlex.rst +++ b/Doc/library/shlex.rst @@ -374,23 +374,19 @@ is changed: any run of these characters is returned as a single token. While this is short of a full parser for shells (which would be out of scope for the standard library, given the multiplicity of shells out there), it does allow you to perform processing of command lines more easily than you could -otherwise. To illustrate, you can see the difference in the following snippet:: +otherwise. To illustrate, you can see the difference in the following snippet: - import shlex +.. doctest:: + :options: +NORMALIZE_WHITESPACE - for punct in (False, True): - if punct: - message = 'Old' - else: - message = 'New' - text = "a && b; c && d || e; f >'abc'; (def \"ghi\")" - s = shlex.shlex(text, punctuation_chars=punct) - print('%s: %s' % (message, list(s))) - -which prints out:: - - Old: ['a', '&', '&', 'b', ';', 'c', '&', '&', 'd', '|', '|', 'e', ';', 'f', '>', "'abc'", ';', '(', 'def', '"ghi"', ')'] - New: ['a', '&&', 'b', ';', 'c', '&&', 'd', '||', 'e', ';', 'f', '>', "'abc'", ';', '(', 'def', '"ghi"', ')'] + >>> import shlex + >>> text = "a && b; c && d || e; f >'abc'; (def \"ghi\")" + >>> list(shlex.shlex(text)) + ['a', '&', '&', 'b', ';', 'c', '&', '&', 'd', '|', '|', 'e', ';', 'f', '>', + "'abc'", ';', '(', 'def', '"ghi"', ')'] + >>> list(shlex.shlex(text, punctuation_chars=True)) + ['a', '&&', 'b', ';', 'c', '&&', 'd', '||', 'e', ';', 'f', '>', "'abc'", + ';', '(', 'def', '"ghi"', ')'] Of course, tokens will be returned which are not valid for shells, and you'll need to implement your own error checks on the returned tokens. -- 2.40.0