bpo-40204: Add :noindex: in the documentation (GH-21859)

Add :noindex: to duplicated documentation to fix "duplicate object
description" errors.

For example, fix this Sphinx 3 issue:

Doc/library/configparser.rst:1146: WARNING: duplicate object
description of configparser.ConfigParser.optionxform, other instance
in library/configparser, use :noindex: for one of them
This commit is contained in:
Victor Stinner 2020-08-13 21:41:54 +02:00 committed by GitHub
parent 20ae565bd2
commit d3ded08048
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 88 additions and 75 deletions

View File

@ -208,6 +208,7 @@ number of frames must be filled in.
.. method:: aifc.tell() .. method:: aifc.tell()
:noindex:
Return the current write position in the output file. Useful in combination Return the current write position in the output file. Useful in combination
with :meth:`setmark`. with :meth:`setmark`.
@ -232,6 +233,7 @@ number of frames must be filled in.
.. method:: aifc.close() .. method:: aifc.close()
:noindex:
Close the AIFF file. The header of the file is updated to reflect the actual Close the AIFF file. The header of the file is updated to reflect the actual
size of the audio data. After calling this method, the object can no longer be size of the audio data. After calling this method, the object can no longer be

View File

@ -674,97 +674,98 @@ be overridden by subclasses or by attribute assignment.
.. attribute:: ConfigParser.BOOLEAN_STATES .. attribute:: ConfigParser.BOOLEAN_STATES
By default when using :meth:`~ConfigParser.getboolean`, config parsers By default when using :meth:`~ConfigParser.getboolean`, config parsers
consider the following values ``True``: ``'1'``, ``'yes'``, ``'true'``, consider the following values ``True``: ``'1'``, ``'yes'``, ``'true'``,
``'on'`` and the following values ``False``: ``'0'``, ``'no'``, ``'false'``, ``'on'`` and the following values ``False``: ``'0'``, ``'no'``, ``'false'``,
``'off'``. You can override this by specifying a custom dictionary of strings ``'off'``. You can override this by specifying a custom dictionary of strings
and their Boolean outcomes. For example: and their Boolean outcomes. For example:
.. doctest:: .. doctest::
>>> custom = configparser.ConfigParser() >>> custom = configparser.ConfigParser()
>>> custom['section1'] = {'funky': 'nope'} >>> custom['section1'] = {'funky': 'nope'}
>>> custom['section1'].getboolean('funky') >>> custom['section1'].getboolean('funky')
Traceback (most recent call last): Traceback (most recent call last):
... ...
ValueError: Not a boolean: nope ValueError: Not a boolean: nope
>>> custom.BOOLEAN_STATES = {'sure': True, 'nope': False} >>> custom.BOOLEAN_STATES = {'sure': True, 'nope': False}
>>> custom['section1'].getboolean('funky') >>> custom['section1'].getboolean('funky')
False False
Other typical Boolean pairs include ``accept``/``reject`` or Other typical Boolean pairs include ``accept``/``reject`` or
``enabled``/``disabled``. ``enabled``/``disabled``.
.. method:: ConfigParser.optionxform(option) .. method:: ConfigParser.optionxform(option)
:noindex:
This method transforms option names on every read, get, or set This method transforms option names on every read, get, or set
operation. The default converts the name to lowercase. This also operation. The default converts the name to lowercase. This also
means that when a configuration file gets written, all keys will be means that when a configuration file gets written, all keys will be
lowercase. Override this method if that's unsuitable. lowercase. Override this method if that's unsuitable.
For example: For example:
.. doctest:: .. doctest::
>>> config = """ >>> config = """
... [Section1] ... [Section1]
... Key = Value ... Key = Value
... ...
... [Section2] ... [Section2]
... AnotherKey = Value ... AnotherKey = Value
... """ ... """
>>> typical = configparser.ConfigParser() >>> typical = configparser.ConfigParser()
>>> typical.read_string(config) >>> typical.read_string(config)
>>> list(typical['Section1'].keys()) >>> list(typical['Section1'].keys())
['key'] ['key']
>>> list(typical['Section2'].keys()) >>> list(typical['Section2'].keys())
['anotherkey'] ['anotherkey']
>>> custom = configparser.RawConfigParser() >>> custom = configparser.RawConfigParser()
>>> custom.optionxform = lambda option: option >>> custom.optionxform = lambda option: option
>>> custom.read_string(config) >>> custom.read_string(config)
>>> list(custom['Section1'].keys()) >>> list(custom['Section1'].keys())
['Key'] ['Key']
>>> list(custom['Section2'].keys()) >>> list(custom['Section2'].keys())
['AnotherKey'] ['AnotherKey']
.. note:: .. note::
The optionxform function transforms option names to a canonical form. The optionxform function transforms option names to a canonical form.
This should be an idempotent function: if the name is already in This should be an idempotent function: if the name is already in
canonical form, it should be returned unchanged. canonical form, it should be returned unchanged.
.. attribute:: ConfigParser.SECTCRE .. attribute:: ConfigParser.SECTCRE
A compiled regular expression used to parse section headers. The default A compiled regular expression used to parse section headers. The default
matches ``[section]`` to the name ``"section"``. Whitespace is considered matches ``[section]`` to the name ``"section"``. Whitespace is considered
part of the section name, thus ``[ larch ]`` will be read as a section of part of the section name, thus ``[ larch ]`` will be read as a section of
name ``" larch "``. Override this attribute if that's unsuitable. For name ``" larch "``. Override this attribute if that's unsuitable. For
example: example:
.. doctest:: .. doctest::
>>> import re >>> import re
>>> config = """ >>> config = """
... [Section 1] ... [Section 1]
... option = value ... option = value
... ...
... [ Section 2 ] ... [ Section 2 ]
... another = val ... another = val
... """ ... """
>>> typical = configparser.ConfigParser() >>> typical = configparser.ConfigParser()
>>> typical.read_string(config) >>> typical.read_string(config)
>>> typical.sections() >>> typical.sections()
['Section 1', ' Section 2 '] ['Section 1', ' Section 2 ']
>>> custom = configparser.ConfigParser() >>> custom = configparser.ConfigParser()
>>> custom.SECTCRE = re.compile(r"\[ *(?P<header>[^]]+?) *\]") >>> custom.SECTCRE = re.compile(r"\[ *(?P<header>[^]]+?) *\]")
>>> custom.read_string(config) >>> custom.read_string(config)
>>> custom.sections() >>> custom.sections()
['Section 1', 'Section 2'] ['Section 1', 'Section 2']
.. note:: .. note::
While ConfigParser objects also use an ``OPTCRE`` attribute for recognizing While ConfigParser objects also use an ``OPTCRE`` attribute for recognizing
option lines, it's not recommended to override it because that would option lines, it's not recommended to override it because that would
interfere with constructor options *allow_no_value* and *delimiters*. interfere with constructor options *allow_no_value* and *delimiters*.
Legacy API Examples Legacy API Examples

View File

@ -24,6 +24,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module.
.. class:: SequenceMatcher .. class:: SequenceMatcher
:noindex:
This is a flexible class for comparing pairs of sequences of any type, so long This is a flexible class for comparing pairs of sequences of any type, so long
as the sequence elements are :term:`hashable`. The basic algorithm predates, and is a as the sequence elements are :term:`hashable`. The basic algorithm predates, and is a
@ -651,6 +652,7 @@ The :class:`Differ` class has this constructor:
.. class:: Differ(linejunk=None, charjunk=None) .. class:: Differ(linejunk=None, charjunk=None)
:noindex:
Optional keyword parameters *linejunk* and *charjunk* are for filter functions Optional keyword parameters *linejunk* and *charjunk* are for filter functions
(or ``None``): (or ``None``):

View File

@ -50,6 +50,7 @@ helper, :class:`auto`.
the bitwise operations without losing their :class:`Flag` membership. the bitwise operations without losing their :class:`Flag` membership.
.. function:: unique .. function:: unique
:noindex:
Enum class decorator that ensures only one name is bound to any one value. Enum class decorator that ensures only one name is bound to any one value.

View File

@ -1695,7 +1695,9 @@ to sockets.
.. method:: socket.setsockopt(level, optname, value: int) .. method:: socket.setsockopt(level, optname, value: int)
.. method:: socket.setsockopt(level, optname, value: buffer) .. method:: socket.setsockopt(level, optname, value: buffer)
:noindex:
.. method:: socket.setsockopt(level, optname, None, optlen: int) .. method:: socket.setsockopt(level, optname, None, optlen: int)
:noindex:
.. index:: module: struct .. index:: module: struct

View File

@ -151,6 +151,7 @@ Some facts and figures:
.. class:: TarFile .. class:: TarFile
:noindex:
Class for reading and writing tar archives. Do not use this class directly: Class for reading and writing tar archives. Do not use this class directly:
use :func:`tarfile.open` instead. See :ref:`tarfile-objects`. use :func:`tarfile.open` instead. See :ref:`tarfile-objects`.

View File

@ -70,6 +70,7 @@ the :mod:`tokenize` module.
.. data:: TYPE_COMMENT .. data:: TYPE_COMMENT
:noindex:
Token value indicating that a type comment was recognized. Such Token value indicating that a type comment was recognized. Such
tokens are only produced when :func:`ast.parse()` is invoked with tokens are only produced when :func:`ast.parse()` is invoked with

View File

@ -1069,6 +1069,7 @@ More drawing control
~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
.. function:: reset() .. function:: reset()
:noindex:
Delete the turtle's drawings from the screen, re-center the turtle and set Delete the turtle's drawings from the screen, re-center the turtle and set
variables to the default values. variables to the default values.
@ -1090,6 +1091,7 @@ More drawing control
.. function:: clear() .. function:: clear()
:noindex:
Delete the turtle's drawings from the screen. Do not move turtle. State and Delete the turtle's drawings from the screen. Do not move turtle. State and
position of the turtle as well as drawings of other turtles are not affected. position of the turtle as well as drawings of other turtles are not affected.
@ -1362,6 +1364,7 @@ Using events
------------ ------------
.. function:: onclick(fun, btn=1, add=None) .. function:: onclick(fun, btn=1, add=None)
:noindex:
:param fun: a function with two arguments which will be called with the :param fun: a function with two arguments which will be called with the
coordinates of the clicked point on the canvas coordinates of the clicked point on the canvas

View File

@ -946,7 +946,7 @@ tracking URIs for which authentication credentials should always be sent.
If *is_authenticated* is specified as ``True``, *realm* is ignored. If *is_authenticated* is specified as ``True``, *realm* is ignored.
.. method:: HTTPPasswordMgr.find_user_password(realm, authuri) .. method:: HTTPPasswordMgrWithPriorAuth.find_user_password(realm, authuri)
Same as for :class:`HTTPPasswordMgrWithDefaultRealm` objects Same as for :class:`HTTPPasswordMgrWithDefaultRealm` objects