docs: Fix Sphinx 3.x warnings, and enable warnings-as-errors on build.

This enables warnings as errors and fixes all current errors, namely:

- reference to terms in the glossary must now be explicit (:term:)
- method overloads must not be declared as a separate method or must
  use :noindex:
- 2 cases where `` should have been used instead of `
This commit is contained in:
David Lechner 2020-06-03 20:38:45 -05:00 committed by Damien George
parent eeca2c3cbe
commit 1e6d18c915
17 changed files with 54 additions and 50 deletions

View File

@ -3,7 +3,7 @@
# You can set these variables from the command line. # You can set these variables from the command line.
PYTHON = python3 PYTHON = python3
SPHINXOPTS = SPHINXOPTS = -W --keep-going
SPHINXBUILD = sphinx-build SPHINXBUILD = sphinx-build
PAPER = PAPER =
BUILDDIR = build/$(MICROPY_PORT) BUILDDIR = build/$(MICROPY_PORT)

View File

@ -84,9 +84,9 @@ methods to enable over-the-air (OTA) updates.
Returns a 6-tuple ``(type, subtype, addr, size, label, encrypted)``. Returns a 6-tuple ``(type, subtype, addr, size, label, encrypted)``.
.. method:: Partition.readblocks(block_num, buf) .. method:: Partition.readblocks(block_num, buf)
.. method:: Partition.readblocks(block_num, buf, offset) Partition.readblocks(block_num, buf, offset)
.. method:: Partition.writeblocks(block_num, buf) .. method:: Partition.writeblocks(block_num, buf)
.. method:: Partition.writeblocks(block_num, buf, offset) Partition.writeblocks(block_num, buf, offset)
.. method:: Partition.ioctl(cmd, arg) .. method:: Partition.ioctl(cmd, arg)
These methods implement the simple and :ref:`extended These methods implement the simple and :ref:`extended

View File

@ -23,7 +23,7 @@ into MicroPython. There are a few categories of such modules:
* Modules which implement a subset of Python functionality, with a provision * Modules which implement a subset of Python functionality, with a provision
for extension by the user (via Python code). for extension by the user (via Python code).
* Modules which implement MicroPython extensions to the Python standard libraries. * Modules which implement MicroPython extensions to the Python standard libraries.
* Modules specific to a particular `MicroPython port` and thus not portable. * Modules specific to a particular :term:`MicroPython port` and thus not portable.
Note about the availability of the modules and their contents: This documentation Note about the availability of the modules and their contents: This documentation
in general aspires to describe all modules and functions/classes which are in general aspires to describe all modules and functions/classes which are
@ -38,7 +38,7 @@ in a module (or even the entire module) described in this documentation **may be
unavailable** in a particular build of MicroPython on a particular system. The unavailable** in a particular build of MicroPython on a particular system. The
best place to find general information of the availability/non-availability best place to find general information of the availability/non-availability
of a particular feature is the "General Information" section which contains of a particular feature is the "General Information" section which contains
information pertaining to a specific `MicroPython port`. information pertaining to a specific :term:`MicroPython port`.
On some ports you are able to discover the available, built-in libraries that On some ports you are able to discover the available, built-in libraries that
can be imported by entering the following at the REPL:: can be imported by entering the following at the REPL::

View File

@ -100,7 +100,7 @@ Functions
unlocked. unlocked.
Note: `heap_locked()` is not enabled on most ports by default, Note: `heap_locked()` is not enabled on most ports by default,
requires `MICROPY_PY_MICROPYTHON_HEAP_LOCKED`. requires ``MICROPY_PY_MICROPYTHON_HEAP_LOCKED``.
.. function:: kbd_intr(chr) .. function:: kbd_intr(chr)

View File

@ -101,7 +101,7 @@ Methods
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8')) nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
.. method:: WLAN.config('param') .. method:: WLAN.config('param')
.. method:: WLAN.config(param=value, ...) WLAN.config(param=value, ...)
Get or set general network interface parameters. These methods allow to work Get or set general network interface parameters. These methods allow to work
with additional parameters beyond standard IP configuration (as dealt with by with additional parameters beyond standard IP configuration (as dealt with by
@ -117,7 +117,7 @@ Methods
print(ap.config('channel')) print(ap.config('channel'))
Following are commonly supported parameters (availability of a specific parameter Following are commonly supported parameters (availability of a specific parameter
depends on network technology type, driver, and `MicroPython port`). depends on network technology type, driver, and :term:`MicroPython port`).
============= =========== ============= ===========
Parameter Description Parameter Description

View File

@ -39,7 +39,7 @@ Common network adapter interface
================================ ================================
This section describes an (implied) abstract base class for all network This section describes an (implied) abstract base class for all network
interface classes implemented by `MicroPython ports <MicroPython port>` interface classes implemented by :term:`MicroPython ports <MicroPython port>`
for different hardware. This means that MicroPython does not actually for different hardware. This means that MicroPython does not actually
provide ``AbstractNIC`` class, but any actual NIC class, as described provide ``AbstractNIC`` class, but any actual NIC class, as described
in the following sections, implements methods as described here. in the following sections, implements methods as described here.

View File

@ -26,6 +26,7 @@ Constructors
This constructor is deprecated and will be removed in a future version of MicroPython. This constructor is deprecated and will be removed in a future version of MicroPython.
.. class:: pyb.Flash(\*, start=-1, len=-1) .. class:: pyb.Flash(\*, start=-1, len=-1)
:noindex:
Create and return a block device that accesses the flash at the specified offset. The length defaults to the remaining size of the device. Create and return a block device that accesses the flash at the specified offset. The length defaults to the remaining size of the device.
@ -35,9 +36,9 @@ Methods
------- -------
.. method:: Flash.readblocks(block_num, buf) .. method:: Flash.readblocks(block_num, buf)
.. method:: Flash.readblocks(block_num, buf, offset) Flash.readblocks(block_num, buf, offset)
.. method:: Flash.writeblocks(block_num, buf) .. method:: Flash.writeblocks(block_num, buf)
.. method:: Flash.writeblocks(block_num, buf, offset) Flash.writeblocks(block_num, buf, offset)
.. method:: Flash.ioctl(cmd, arg) .. method:: Flash.ioctl(cmd, arg)
These methods implement the simple and :ref:`extended These methods implement the simple and :ref:`extended

View File

@ -7,7 +7,7 @@
|see_cpython_module| :mod:`python:errno`. |see_cpython_module| :mod:`python:errno`.
This module provides access to symbolic error codes for `OSError` exception. This module provides access to symbolic error codes for `OSError` exception.
A particular inventory of codes depends on `MicroPython port`. A particular inventory of codes depends on :term:`MicroPython port`.
Constants Constants
--------- ---------
@ -16,7 +16,7 @@ Constants
Error codes, based on ANSI C/POSIX standard. All error codes start with Error codes, based on ANSI C/POSIX standard. All error codes start with
"E". As mentioned above, inventory of the codes depends on "E". As mentioned above, inventory of the codes depends on
`MicroPython port`. Errors are usually accessible as ``exc.args[0]`` :term:`MicroPython port`. Errors are usually accessible as ``exc.args[0]``
where ``exc`` is an instance of `OSError`. Usage example:: where ``exc`` is an instance of `OSError`. Usage example::
try: try:

View File

@ -114,7 +114,9 @@ Classes
Get the current contents of the underlying buffer which holds data. Get the current contents of the underlying buffer which holds data.
.. class:: StringIO(alloc_size) .. class:: StringIO(alloc_size)
:noindex:
.. class:: BytesIO(alloc_size) .. class:: BytesIO(alloc_size)
:noindex:
Create an empty `StringIO`/`BytesIO` object, preallocated to hold up Create an empty `StringIO`/`BytesIO` object, preallocated to hold up
to *alloc_size* number of bytes. That means that writing that amount to *alloc_size* number of bytes. That means that writing that amount

View File

@ -252,7 +252,7 @@ that the block device supports the extended interface.
dependent on the specific block device. dependent on the specific block device.
.. method:: readblocks(block_num, buf) .. method:: readblocks(block_num, buf)
.. method:: readblocks(block_num, buf, offset) readblocks(block_num, buf, offset)
The first form reads aligned, multiples of blocks. The first form reads aligned, multiples of blocks.
Starting at the block given by the index *block_num*, read blocks from Starting at the block given by the index *block_num*, read blocks from
@ -267,7 +267,7 @@ that the block device supports the extended interface.
The number of bytes to read is given by the length of *buf*. The number of bytes to read is given by the length of *buf*.
.. method:: writeblocks(block_num, buf) .. method:: writeblocks(block_num, buf)
.. method:: writeblocks(block_num, buf, offset) writeblocks(block_num, buf, offset)
The first form writes aligned, multiples of blocks, and requires that the The first form writes aligned, multiples of blocks, and requires that the
blocks that are written to be first erased (if necessary) by this method. blocks that are written to be first erased (if necessary) by this method.

View File

@ -138,12 +138,12 @@ Functions
If *count* is specified and non-zero then substitution will stop after If *count* is specified and non-zero then substitution will stop after
this many substitutions are made. The *flags* argument is ignored. this many substitutions are made. The *flags* argument is ignored.
Note: availability of this function depends on `MicroPython port`. Note: availability of this function depends on :term:`MicroPython port`.
.. data:: DEBUG .. data:: DEBUG
Flag value, display debug information about compiled expression. Flag value, display debug information about compiled expression.
(Availability depends on `MicroPython port`.) (Availability depends on :term:`MicroPython port`.)
.. _regex: .. _regex:
@ -184,7 +184,7 @@ to the replacement function in `sub()`.
Return a tuple containing all the substrings of the groups of the match. Return a tuple containing all the substrings of the groups of the match.
Note: availability of this method depends on `MicroPython port`. Note: availability of this method depends on :term:`MicroPython port`.
.. method:: match.start([index]) .. method:: match.start([index])
match.end([index]) match.end([index])
@ -193,10 +193,10 @@ to the replacement function in `sub()`.
substring group that was matched. *index* defaults to the entire substring group that was matched. *index* defaults to the entire
group, otherwise it will select a group. group, otherwise it will select a group.
Note: availability of these methods depends on `MicroPython port`. Note: availability of these methods depends on :term:`MicroPython port`.
.. method:: match.span([index]) .. method:: match.span([index])
Returns the 2-tuple ``(match.start(index), match.end(index))``. Returns the 2-tuple ``(match.start(index), match.end(index))``.
Note: availability of this method depends on `MicroPython port`. Note: availability of this method depends on :term:`MicroPython port`.

View File

@ -37,8 +37,8 @@ power) and portable way to work with addresses.
However, ``socket`` module (note the difference with native MicroPython However, ``socket`` module (note the difference with native MicroPython
``usocket`` module described here) provides CPython-compatible way to specify ``usocket`` module described here) provides CPython-compatible way to specify
addresses using tuples, as described below. Note that depending on a addresses using tuples, as described below. Note that depending on a
`MicroPython port`, ``socket`` module can be builtin or need to be :term:`MicroPython port`, ``socket`` module can be builtin or need to be
installed from `micropython-lib` (as in the case of `MicroPython Unix port`), installed from `micropython-lib` (as in the case of :term:`MicroPython Unix port`),
and some ports still accept only numeric addresses in the tuple format, and some ports still accept only numeric addresses in the tuple format,
and require to use `getaddrinfo` function to resolve domain names. and require to use `getaddrinfo` function to resolve domain names.
@ -61,7 +61,7 @@ Tuple address format for ``socket`` module:
must be 0. *scopeid* is the interface scope identifier for link-local must be 0. *scopeid* is the interface scope identifier for link-local
addresses. Note the domain names are not accepted as *ipv6_address*, addresses. Note the domain names are not accepted as *ipv6_address*,
they should be resolved first using `usocket.getaddrinfo()`. Availability they should be resolved first using `usocket.getaddrinfo()`. Availability
of IPv6 support depends on a `MicroPython port`. of IPv6 support depends on a :term:`MicroPython port`.
Functions Functions
--------- ---------
@ -141,7 +141,7 @@ Constants
.. data:: AF_INET .. data:: AF_INET
AF_INET6 AF_INET6
Address family types. Availability depends on a particular `MicroPython port`. Address family types. Availability depends on a particular :term:`MicroPython port`.
.. data:: SOCK_STREAM .. data:: SOCK_STREAM
SOCK_DGRAM SOCK_DGRAM
@ -151,7 +151,7 @@ Constants
.. data:: IPPROTO_UDP .. data:: IPPROTO_UDP
IPPROTO_TCP IPPROTO_TCP
IP protocol numbers. Availability depends on a particular `MicroPython port`. IP protocol numbers. Availability depends on a particular :term:`MicroPython port`.
Note that you don't need to specify these in a call to `usocket.socket()`, Note that you don't need to specify these in a call to `usocket.socket()`,
because `SOCK_STREAM` socket type automatically selects `IPPROTO_TCP`, and because `SOCK_STREAM` socket type automatically selects `IPPROTO_TCP`, and
`SOCK_DGRAM` - `IPPROTO_UDP`. Thus, the only real use of these constants `SOCK_DGRAM` - `IPPROTO_UDP`. Thus, the only real use of these constants
@ -160,12 +160,12 @@ Constants
.. data:: usocket.SOL_* .. data:: usocket.SOL_*
Socket option levels (an argument to `setsockopt()`). The exact Socket option levels (an argument to `setsockopt()`). The exact
inventory depends on a `MicroPython port`. inventory depends on a :term:`MicroPython port`.
.. data:: usocket.SO_* .. data:: usocket.SO_*
Socket options (an argument to `setsockopt()`). The exact Socket options (an argument to `setsockopt()`). The exact
inventory depends on a `MicroPython port`. inventory depends on a :term:`MicroPython port`.
Constants specific to WiPy: Constants specific to WiPy:
@ -259,7 +259,7 @@ Methods
completed. If zero is given, the socket is put in non-blocking mode. If None is given, the socket completed. If zero is given, the socket is put in non-blocking mode. If None is given, the socket
is put in blocking mode. is put in blocking mode.
Not every `MicroPython port` supports this method. A more portable and Not every :term:`MicroPython port` supports this method. A more portable and
generic solution is to use `uselect.poll` object. This allows to wait on generic solution is to use `uselect.poll` object. This allows to wait on
multiple objects at the same time (and not just on sockets, but on generic multiple objects at the same time (and not just on sockets, but on generic
`stream` objects which support polling). Example:: `stream` objects which support polling). Example::

View File

@ -24,7 +24,7 @@ Functions
:meth:`~usocket.socket.accept()` on a non-SSL listening server socket. :meth:`~usocket.socket.accept()` on a non-SSL listening server socket.
Depending on the underlying module implementation in a particular Depending on the underlying module implementation in a particular
`MicroPython port`, some or all keyword arguments above may be not supported. :term:`MicroPython port`, some or all keyword arguments above may be not supported.
.. warning:: .. warning::

View File

@ -6,6 +6,7 @@ if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build set SPHINXBUILD=sphinx-build
) )
set BUILDDIR=_build set BUILDDIR=_build
set SPHINXOPTS=-W --keep-going
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
set I18NSPHINXOPTS=%SPHINXOPTS% . set I18NSPHINXOPTS=%SPHINXOPTS% .
if NOT "%PAPER%" == "" ( if NOT "%PAPER%" == "" (

View File

@ -14,8 +14,8 @@ packages:
1. Python modules and packages are turned into distribution package 1. Python modules and packages are turned into distribution package
archives, and published at the Python Package Index (PyPI). archives, and published at the Python Package Index (PyPI).
2. `upip` package manager can be used to install a distribution package 2. :term:`upip` package manager can be used to install a distribution package
on a `MicroPython port` with networking capabilities (for example, on a :term:`MicroPython port` with networking capabilities (for example,
on the Unix port). on the Unix port).
3. For ports without networking capabilities, an "installation image" 3. For ports without networking capabilities, an "installation image"
can be prepared on the Unix port, and transferred to a device by can be prepared on the Unix port, and transferred to a device by
@ -51,14 +51,14 @@ even by the smallest devices.
Besides the small compression dictionary size, MicroPython distribution Besides the small compression dictionary size, MicroPython distribution
packages also have other optimizations, like removing any files from packages also have other optimizations, like removing any files from
the archive which aren't used by the installation process. In particular, the archive which aren't used by the installation process. In particular,
`upip` package manager doesn't execute ``setup.py`` during installation :term:`upip` package manager doesn't execute ``setup.py`` during installation
(see below), and thus that file is not included in the archive. (see below), and thus that file is not included in the archive.
At the same time, these optimizations make MicroPython distribution At the same time, these optimizations make MicroPython distribution
packages not compatible with `CPython`'s package manager, ``pip``. packages not compatible with :term:`CPython`'s package manager, ``pip``.
This isn't considered a big problem, because: This isn't considered a big problem, because:
1. Packages can be installed with `upip`, and then can be used with 1. Packages can be installed with :term:`upip`, and then can be used with
CPython (if they are compatible with it). CPython (if they are compatible with it).
2. In the other direction, majority of CPython packages would be 2. In the other direction, majority of CPython packages would be
incompatible with MicroPython by various reasons, first of all, incompatible with MicroPython by various reasons, first of all,
@ -73,12 +73,12 @@ resource constrained devices.
------------------------ ------------------------
MicroPython distribution packages are intended to be installed using MicroPython distribution packages are intended to be installed using
the `upip` package manager. `upip` is a Python application which is the :term:`upip` package manager. :term:`upip` is a Python application which is
usually distributed (as frozen bytecode) with network-enabled usually distributed (as frozen bytecode) with network-enabled
`MicroPython ports <MicroPython port>`. At the very least, :term:`MicroPython ports <MicroPython port>`. At the very least,
`upip` is available in the `MicroPython Unix port`. :term:`upip` is available in the :term:`MicroPython Unix port`.
On any `MicroPython port` providing `upip`, it can be accessed as On any :term:`MicroPython port` providing :term:`upip`, it can be accessed as
following:: following::
import upip import upip
@ -123,12 +123,12 @@ commands which corresponds to the example above are::
Cross-installing packages Cross-installing packages
------------------------- -------------------------
For `MicroPython ports <MicroPython port>` without native networking For :term:`MicroPython ports <MicroPython port>` without native networking
capabilities, the recommend process is "cross-installing" them into a capabilities, the recommend process is "cross-installing" them into a
"directory image" using the `MicroPython Unix port`, and then "directory image" using the :term:`MicroPython Unix port`, and then
transferring this image to a device by suitable means. transferring this image to a device by suitable means.
Installing to a directory image involves using ``-p`` switch to `upip`:: Installing to a directory image involves using ``-p`` switch to :term:`upip`::
micropython -m upip install -p install_dir micropython-pystone_lowmem micropython -m upip install -p install_dir micropython-pystone_lowmem
@ -137,13 +137,13 @@ packages) will be available in the ``install_dir/`` subdirectory. You
would need to transfer contents of this directory (without the would need to transfer contents of this directory (without the
``install_dir/`` prefix) to the device, at the suitable location, where ``install_dir/`` prefix) to the device, at the suitable location, where
it can be found by the Python ``import`` statement (see discussion of it can be found by the Python ``import`` statement (see discussion of
the `upip` installation path above). the :term:`upip` installation path above).
Cross-installing packages with freezing Cross-installing packages with freezing
--------------------------------------- ---------------------------------------
For the low-memory `MicroPython ports <MicroPython port>`, the process For the low-memory :term:`MicroPython ports <MicroPython port>`, the process
described in the previous section does not provide the most efficient described in the previous section does not provide the most efficient
resource usage,because the packages are installed in the source form, resource usage,because the packages are installed in the source form,
so need to be compiled to the bytecome on each import. This compilation so need to be compiled to the bytecome on each import. This compilation
@ -160,7 +160,7 @@ mentioned above:
* Filesystem is not required for frozen packages. * Filesystem is not required for frozen packages.
Using frozen bytecode requires building the executable (firmware) Using frozen bytecode requires building the executable (firmware)
for a given `MicroPython port` from the C source code. Consequently, for a given :term:`MicroPython port` from the C source code. Consequently,
the process is: the process is:
1. Follow the instructions for a particular port on setting up a 1. Follow the instructions for a particular port on setting up a
@ -168,7 +168,7 @@ the process is:
study instructions in ``ports/esp8266/README.md`` and follow them. study instructions in ``ports/esp8266/README.md`` and follow them.
Make sure you can build the port and deploy the resulting Make sure you can build the port and deploy the resulting
executable/firmware successfully before proceeding to the next steps. executable/firmware successfully before proceeding to the next steps.
2. Build `MicroPython Unix port` and make sure it is in your PATH and 2. Build :term:`MicroPython Unix port` and make sure it is in your PATH and
you can execute ``micropython``. you can execute ``micropython``.
3. Change to port's directory (e.g. ``ports/esp8266/`` for ESP8266). 3. Change to port's directory (e.g. ``ports/esp8266/`` for ESP8266).
4. Run ``make clean-frozen``. This step cleans up any previous 4. Run ``make clean-frozen``. This step cleans up any previous
@ -281,7 +281,7 @@ following calls::
pkg_resources.resource_stream(__name__, "data/page.html") pkg_resources.resource_stream(__name__, "data/page.html")
pkg_resources.resource_stream(__name__, "data/image.png") pkg_resources.resource_stream(__name__, "data/image.png")
You can develop and debug using the `MicroPython Unix port` as usual. You can develop and debug using the :term:`MicroPython Unix port` as usual.
When time comes to make a distribution package out of it, just use When time comes to make a distribution package out of it, just use
overridden "sdist" command from sdist_upip.py module as described in overridden "sdist" command from sdist_upip.py module as described in
the previous section. the previous section.

View File

@ -68,7 +68,7 @@ example::
$ pyboard.py -c 'print(1+1)' $ pyboard.py -c 'print(1+1)'
Similarly, the ``PYBOARD_BAUDRATE`` environment variable can be used Similarly, the ``PYBOARD_BAUDRATE`` environment variable can be used
to set the default for the `--baudrate` option. to set the default for the ``--baudrate`` option.
Running a script on the device Running a script on the device
------------------------------ ------------------------------

View File

@ -4,6 +4,6 @@
.. |see_cpython_module| replace:: .. |see_cpython_module| replace::
*This module implements a subset of the corresponding* `CPython` *module, *This module implements a subset of the corresponding* :term:`CPython` *module,
as described below. For more information, refer to the original as described below. For more information, refer to the original
CPython documentation:* CPython documentation:*