Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
eafc59ae
Commit
eafc59ae
authored
Oct 13, 2013
by
Serhiy Storchaka
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #19197: Improved cross-references in the shlex module documentation.
parent
b1a1693b
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
51 deletions
+59
-51
Doc/library/shlex.rst
Doc/library/shlex.rst
+59
-51
No files found.
Doc/library/shlex.rst
View file @
eafc59ae
...
@@ -12,9 +12,9 @@
...
@@ -12,9 +12,9 @@
--------------
--------------
The :class:`
shlex` class makes it easy to write lexical analyzers for simple
The :class:`
~shlex.shlex` class makes it easy to write lexical analyzers for
s
yntaxes resembling that of the Unix shell. This will often be useful for
s
imple syntaxes resembling that of the Unix shell. This will often be useful
writing minilanguages, (for example, in run control files for Python
for
writing minilanguages, (for example, in run control files for Python
applications) or for parsing quoted strings.
applications) or for parsing quoted strings.
The :mod:`shlex` module defines the following functions:
The :mod:`shlex` module defines the following functions:
...
@@ -24,15 +24,16 @@ The :mod:`shlex` module defines the following functions:
...
@@ -24,15 +24,16 @@ The :mod:`shlex` module defines the following functions:
Split the string *s* using shell-like syntax. If *comments* is :const:`False`
Split the string *s* using shell-like syntax. If *comments* is :const:`False`
(the default), the parsing of comments in the given string will be disabled
(the default), the parsing of comments in the given string will be disabled
(setting the :attr:`commenters` attribute of the :class:`shlex` instance to
(setting the :attr:`~shlex.commenters` attribute of the
the empty string). This function operates in POSIX mode by default, but uses
:class:`~shlex.shlex` instance to the empty string). This function operates
non-POSIX mode if the *posix* argument is false.
in POSIX mode by default, but uses non-POSIX mode if the *posix* argument is
false.
.. note::
.. note::
Since the :func:`split` function instantiates a :class:`
shlex` instance,
Since the :func:`split` function instantiates a :class:`
~shlex.shlex`
passing ``None`` for *s* will read the string to split from standard
instance, passing ``None`` for *s* will read the string to split from
input.
standard
input.
.. function:: quote(s)
.. function:: quote(s)
...
@@ -73,17 +74,19 @@ The :mod:`shlex` module defines the following class:
...
@@ -73,17 +74,19 @@ The :mod:`shlex` module defines the following class:
.. class:: shlex(instream=None, infile=None, posix=False)
.. class:: shlex(instream=None, infile=None, posix=False)
A :class:`shlex` instance or subclass instance is a lexical analyzer object.
A :class:`~shlex.shlex` instance or subclass instance is a lexical analyzer
The initialization argument, if present, specifies where to read characters
object. The initialization argument, if present, specifies where to read
from. It must be a file-/stream-like object with :meth:`read` and
characters from. It must be a file-/stream-like object with
:meth:`readline` methods, or a string. If no argument is given, input will
:meth:`~io.TextIOBase.read` and :meth:`~io.TextIOBase.readline` methods, or
be taken from ``sys.stdin``. The second optional argument is a filename
a string. If no argument is given, input will be taken from ``sys.stdin``.
string, which sets the initial value of the :attr:`infile` attribute. If the
The second optional argument is a filename string, which sets the initial
*instream* argument is omitted or equal to ``sys.stdin``, this second
value of the :attr:`~shlex.infile` attribute. If the *instream*
argument defaults to "stdin". The *posix* argument defines the operational
argument is omitted or equal to ``sys.stdin``, this second argument
mode: when *posix* is not true (default), the :class:`shlex` instance will
defaults to "stdin". The *posix* argument defines the operational mode:
operate in compatibility mode. When operating in POSIX mode, :class:`shlex`
when *posix* is not true (default), the :class:`~shlex.shlex` instance will
will try to be as close as possible to the POSIX shell parsing rules.
operate in compatibility mode. When operating in POSIX mode,
:class:`~shlex.shlex` will try to be as close as possible to the POSIX shell
parsing rules.
.. seealso::
.. seealso::
...
@@ -97,14 +100,14 @@ The :mod:`shlex` module defines the following class:
...
@@ -97,14 +100,14 @@ The :mod:`shlex` module defines the following class:
shlex Objects
shlex Objects
-------------
-------------
A :class:`shlex` instance has the following methods:
A :class:`
~shlex.
shlex` instance has the following methods:
.. method:: shlex.get_token()
.. method:: shlex.get_token()
Return a token. If tokens have been stacked using :meth:`push_token`, pop a
Return a token. If tokens have been stacked using :meth:`push_token`, pop a
token off the stack. Otherwise, read one from the input stream. If reading
token off the stack. Otherwise, read one from the input stream. If reading
encounters an immediate end-of-file, :attr:`
self.
eof` is returned (the empty
encounters an immediate end-of-file, :attr:`eof` is returned (the empty
string (``''``) in non-POSIX mode, and ``None`` in POSIX mode).
string (``''``) in non-POSIX mode, and ``None`` in POSIX mode).
...
@@ -122,9 +125,9 @@ A :class:`shlex` instance has the following methods:
...
@@ -122,9 +125,9 @@ A :class:`shlex` instance has the following methods:
.. method:: shlex.sourcehook(filename)
.. method:: shlex.sourcehook(filename)
When :class:`
shlex` detects a source request (see :attr:`source` below) this
When :class:`
~shlex.shlex` detects a source request (see :attr:`source`
method is given the following token as argument, and expected to return a tuple
below) this method is given the following token as argument, and expected
consisting of a filename and an open file-like object.
to return a tuple
consisting of a filename and an open file-like object.
Normally, this method first strips any quotes off the argument. If the result
Normally, this method first strips any quotes off the argument. If the result
is an absolute pathname, or there was no previous source request in effect, or
is an absolute pathname, or there was no previous source request in effect, or
...
@@ -141,8 +144,9 @@ A :class:`shlex` instance has the following methods:
...
@@ -141,8 +144,9 @@ A :class:`shlex` instance has the following methods:
This hook is exposed so that you can use it to implement directory search paths,
This hook is exposed so that you can use it to implement directory search paths,
addition of file extensions, and other namespace hacks. There is no
addition of file extensions, and other namespace hacks. There is no
corresponding 'close' hook, but a shlex instance will call the :meth:`close`
corresponding 'close' hook, but a shlex instance will call the
method of the sourced input stream when it returns EOF.
:meth:`~io.IOBase.close` method of the sourced input stream when it returns
EOF.
For more explicit control of source stacking, use the :meth:`push_source` and
For more explicit control of source stacking, use the :meth:`push_source` and
:meth:`pop_source` methods.
:meth:`pop_source` methods.
...
@@ -172,8 +176,8 @@ A :class:`shlex` instance has the following methods:
...
@@ -172,8 +176,8 @@ A :class:`shlex` instance has the following methods:
messages in the standard, parseable format understood by Emacs and other Unix
messages in the standard, parseable format understood by Emacs and other Unix
tools.
tools.
Instances of :class:`
shlex` subclasses have some public instance variables which
Instances of :class:`
~shlex.shlex` subclasses have some public instance
either control lexical analysis or can be used for debugging:
variables which
either control lexical analysis or can be used for debugging:
.. attribute:: shlex.commenters
.. attribute:: shlex.commenters
...
@@ -218,8 +222,8 @@ either control lexical analysis or can be used for debugging:
...
@@ -218,8 +222,8 @@ either control lexical analysis or can be used for debugging:
.. attribute:: shlex.whitespace_split
.. attribute:: shlex.whitespace_split
If ``True``, tokens will only be split in whitespaces. This is useful, for
If ``True``, tokens will only be split in whitespaces. This is useful, for
example, for parsing command lines with :class:`
shlex`, getting tokens in a
example, for parsing command lines with :class:`
~shlex.shlex`, getting
similar way to shell arguments.
tokens in a
similar way to shell arguments.
.. attribute:: shlex.infile
.. attribute:: shlex.infile
...
@@ -231,7 +235,8 @@ either control lexical analysis or can be used for debugging:
...
@@ -231,7 +235,8 @@ either control lexical analysis or can be used for debugging:
.. attribute:: shlex.instream
.. attribute:: shlex.instream
The input stream from which this :class:`shlex` instance is reading characters.
The input stream from which this :class:`~shlex.shlex` instance is reading
characters.
.. attribute:: shlex.source
.. attribute:: shlex.source
...
@@ -240,16 +245,16 @@ either control lexical analysis or can be used for debugging:
...
@@ -240,16 +245,16 @@ either control lexical analysis or can be used for debugging:
string will be recognized as a lexical-level inclusion request similar to the
string will be recognized as a lexical-level inclusion request similar to the
``source`` keyword in various shells. That is, the immediately following token
``source`` keyword in various shells. That is, the immediately following token
will opened as a filename and input taken from that stream until EOF, at which
will opened as a filename and input taken from that stream until EOF, at which
point the :meth:`
close` method of that stream will be called and the input
point the :meth:`
~io.IOBase.close` method of that stream will be called and
source will again become the original input stream. Source requests may b
e
the input source will again become the original input stream. Sourc
e
stacked any number of levels deep.
requests may be
stacked any number of levels deep.
.. attribute:: shlex.debug
.. attribute:: shlex.debug
If this attribute is numeric and ``1`` or more, a :class:`
shlex` instance will
If this attribute is numeric and ``1`` or more, a :class:`
~shlex.shlex`
print verbose progress output on its behavior. If you need to use this, you can
instance will print verbose progress output on its behavior. If you need
read the module source code to learn the details.
to use this, you can
read the module source code to learn the details.
.. attribute:: shlex.lineno
.. attribute:: shlex.lineno
...
@@ -273,7 +278,7 @@ either control lexical analysis or can be used for debugging:
...
@@ -273,7 +278,7 @@ either control lexical analysis or can be used for debugging:
Parsing Rules
Parsing Rules
-------------
-------------
When operating in non-POSIX mode, :class:`shlex` will try to obey to the
When operating in non-POSIX mode, :class:`
~shlex.
shlex` will try to obey to the
following rules.
following rules.
* Quote characters are not recognized within words (``Do"Not"Separate`` is
* Quote characters are not recognized within words (``Do"Not"Separate`` is
...
@@ -287,16 +292,17 @@ following rules.
...
@@ -287,16 +292,17 @@ following rules.
* Closing quotes separate words (``"Do"Separate`` is parsed as ``"Do"`` and
* Closing quotes separate words (``"Do"Separate`` is parsed as ``"Do"`` and
``Separate``);
``Separate``);
* If :attr:`whitespace_split` is ``False``, any character not declared to be a
* If :attr:`~shlex.whitespace_split` is ``False``, any character not
word character, whitespace, or a quote will be returned as a single-character
declared to be a word character, whitespace, or a quote will be returned as
token. If it is ``True``, :class:`shlex` will only split words in whitespaces;
a single-character token. If it is ``True``, :class:`~shlex.shlex` will only
split words in whitespaces;
* EOF is signaled with an empty string (``''``);
* EOF is signaled with an empty string (``''``);
* It's not possible to parse empty strings, even if quoted.
* It's not possible to parse empty strings, even if quoted.
When operating in POSIX mode, :class:`
shlex` will try to obey to the following
When operating in POSIX mode, :class:`
~shlex.shlex` will try to obey to the
parsing rules.
following
parsing rules.
* Quotes are stripped out, and do not separate words (``"Do"Not"Separate"`` is
* Quotes are stripped out, and do not separate words (``"Do"Not"Separate"`` is
parsed as the single word ``DoNotSeparate``);
parsed as the single word ``DoNotSeparate``);
...
@@ -304,14 +310,16 @@ parsing rules.
...
@@ -304,14 +310,16 @@ parsing rules.
* Non-quoted escape characters (e.g. ``'\'``) preserve the literal value of the
* Non-quoted escape characters (e.g. ``'\'``) preserve the literal value of the
next character that follows;
next character that follows;
* Enclosing characters in quotes which are not part of :attr:`escapedquotes`
* Enclosing characters in quotes which are not part of
(e.g. ``"'"``) preserve the literal value of all characters within the quotes;
:attr:`~shlex.escapedquotes` (e.g. ``"'"``) preserve the literal value
of all characters within the quotes;
* Enclosing characters in quotes which are part of :attr:`escapedquotes` (e.g.
* Enclosing characters in quotes which are part of
``'"'``) preserves the literal value of all characters within the quotes, with
:attr:`~shlex.escapedquotes` (e.g. ``'"'``) preserves the literal value
the exception of the characters mentioned in :attr:`escape`. The escape
of all characters within the quotes, with the exception of the characters
characters retain its special meaning only when followed by the quote in use, or
mentioned in :attr:`~shlex.escape`. The escape characters retain its
the escape character itself. Otherwise the escape character will be considered a
special meaning only when followed by the quote in use, or the escape
character itself. Otherwise the escape character will be considered a
normal character.
normal character.
* EOF is signaled with a :const:`None` value;
* EOF is signaled with a :const:`None` value;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment