summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2023-07-22 18:35:22 (GMT)
committerGitHub <noreply@github.com>2023-07-22 18:35:22 (GMT)
commitf8b7fe2f2647813ae8249675a80e59c117d30fe1 (patch)
tree16fcc31b7ebd0ae7ada477ec1d3594428505e64c /Doc
parent26e08dfdd7ac1b3d567d30cd35e4898121580390 (diff)
downloadcpython-f8b7fe2f2647813ae8249675a80e59c117d30fe1.zip
cpython-f8b7fe2f2647813ae8249675a80e59c117d30fe1.tar.gz
cpython-f8b7fe2f2647813ae8249675a80e59c117d30fe1.tar.bz2
gh-106948: Add standard external names to nitpick_ignore (GH-106949)
It includes standard C types, macros and variables like "size_t", "LONG_MAX" and "errno", and standard environment variables like "PATH".
Diffstat (limited to 'Doc')
-rw-r--r--Doc/c-api/arg.rst2
-rw-r--r--Doc/c-api/memory.rst2
-rw-r--r--Doc/c-api/unicode.rst22
-rw-r--r--Doc/c-api/veryhigh.rst2
-rw-r--r--Doc/conf.py52
-rw-r--r--Doc/library/array.rst4
-rw-r--r--Doc/library/ctypes.rst12
-rw-r--r--Doc/library/os.rst2
-rw-r--r--Doc/library/struct.rst4
-rw-r--r--Doc/library/venv.rst6
-rw-r--r--Doc/library/webbrowser.rst6
-rw-r--r--Doc/tools/.nitignore7
-rw-r--r--Doc/whatsnew/3.12.rst2
-rw-r--r--Doc/whatsnew/3.13.rst10
-rw-r--r--Doc/whatsnew/3.3.rst2
-rw-r--r--Doc/whatsnew/3.5.rst2
-rw-r--r--Doc/whatsnew/3.9.rst4
17 files changed, 93 insertions, 48 deletions
diff --git a/Doc/c-api/arg.rst b/Doc/c-api/arg.rst
index e8d141f..9d744a1 100644
--- a/Doc/c-api/arg.rst
+++ b/Doc/c-api/arg.rst
@@ -555,7 +555,7 @@ Building values
Same as ``s#``.
``u`` (:class:`str`) [const wchar_t \*]
- Convert a null-terminated :c:expr:`wchar_t` buffer of Unicode (UTF-16 or UCS-4)
+ Convert a null-terminated :c:type:`wchar_t` buffer of Unicode (UTF-16 or UCS-4)
data to a Python Unicode object. If the Unicode buffer pointer is ``NULL``,
``None`` is returned.
diff --git a/Doc/c-api/memory.rst b/Doc/c-api/memory.rst
index 35c356f..4ca3b88 100644
--- a/Doc/c-api/memory.rst
+++ b/Doc/c-api/memory.rst
@@ -581,7 +581,7 @@ that the treatment of negative indices differs from a Python slice):
default).
A serial number, incremented by 1 on each call to a malloc-like or
- realloc-like function. Big-endian ``size_t``. If "bad memory" is detected
+ realloc-like function. Big-endian :c:type:`size_t`. If "bad memory" is detected
later, the serial number gives an excellent way to set a breakpoint on the
next run, to capture the instant at which this block was passed out. The
static function bumpserialno() in obmalloc.c is the only place the serial
diff --git a/Doc/c-api/unicode.rst b/Doc/c-api/unicode.rst
index beb4f42..cf97b11 100644
--- a/Doc/c-api/unicode.rst
+++ b/Doc/c-api/unicode.rst
@@ -44,7 +44,7 @@ Python:
.. c:type:: Py_UNICODE
- This is a typedef of :c:expr:`wchar_t`, which is a 16-bit type or 32-bit type
+ This is a typedef of :c:type:`wchar_t`, which is a 16-bit type or 32-bit type
depending on the platform.
.. versionchanged:: 3.3
@@ -437,11 +437,11 @@ APIs:
+----------+-----------------------------------------------------+
| ``ll`` | :c:expr:`long long` or :c:expr:`unsigned long long` |
+----------+-----------------------------------------------------+
- | ``j`` | :c:expr:`intmax_t` or :c:expr:`uintmax_t` |
+ | ``j`` | :c:type:`intmax_t` or :c:type:`uintmax_t` |
+----------+-----------------------------------------------------+
- | ``z`` | :c:expr:`size_t` or :c:expr:`ssize_t` |
+ | ``z`` | :c:type:`size_t` or :c:type:`ssize_t` |
+----------+-----------------------------------------------------+
- | ``t`` | :c:expr:`ptrdiff_t` |
+ | ``t`` | :c:type:`ptrdiff_t` |
+----------+-----------------------------------------------------+
The length modifier ``l`` for following conversions ``s`` or ``V`` specify
@@ -520,7 +520,7 @@ APIs:
.. note::
The width formatter unit is number of characters rather than bytes.
- The precision formatter unit is number of bytes or :c:expr:`wchar_t`
+ The precision formatter unit is number of bytes or :c:type:`wchar_t`
items (if the length modifier ``l`` is used) for ``"%s"`` and
``"%V"`` (if the ``PyObject*`` argument is ``NULL``), and a number of
characters for ``"%A"``, ``"%U"``, ``"%S"``, ``"%R"`` and ``"%V"``
@@ -839,11 +839,11 @@ conversion function:
wchar_t Support
"""""""""""""""
-:c:expr:`wchar_t` support for platforms which support it:
+:c:type:`wchar_t` support for platforms which support it:
.. c:function:: PyObject* PyUnicode_FromWideChar(const wchar_t *w, Py_ssize_t size)
- Create a Unicode object from the :c:expr:`wchar_t` buffer *w* of the given *size*.
+ Create a Unicode object from the :c:type:`wchar_t` buffer *w* of the given *size*.
Passing ``-1`` as the *size* indicates that the function must itself compute the length,
using wcslen.
Return ``NULL`` on failure.
@@ -851,9 +851,9 @@ wchar_t Support
.. c:function:: Py_ssize_t PyUnicode_AsWideChar(PyObject *unicode, wchar_t *w, Py_ssize_t size)
- Copy the Unicode object contents into the :c:expr:`wchar_t` buffer *w*. At most
- *size* :c:expr:`wchar_t` characters are copied (excluding a possibly trailing
- null termination character). Return the number of :c:expr:`wchar_t` characters
+ Copy the Unicode object contents into the :c:type:`wchar_t` buffer *w*. At most
+ *size* :c:type:`wchar_t` characters are copied (excluding a possibly trailing
+ null termination character). Return the number of :c:type:`wchar_t` characters
copied or ``-1`` in case of an error. Note that the resulting :c:expr:`wchar_t*`
string may or may not be null-terminated. It is the responsibility of the caller
to make sure that the :c:expr:`wchar_t*` string is null-terminated in case this is
@@ -867,7 +867,7 @@ wchar_t Support
Convert the Unicode object to a wide character string. The output string
always ends with a null character. If *size* is not ``NULL``, write the number
of wide characters (excluding the trailing null termination character) into
- *\*size*. Note that the resulting :c:expr:`wchar_t` string might contain
+ *\*size*. Note that the resulting :c:type:`wchar_t` string might contain
null characters, which would cause the string to be truncated when used with
most C functions. If *size* is ``NULL`` and the :c:expr:`wchar_t*` string
contains null characters a :exc:`ValueError` is raised.
diff --git a/Doc/c-api/veryhigh.rst b/Doc/c-api/veryhigh.rst
index 1e8a945..56fa2d6 100644
--- a/Doc/c-api/veryhigh.rst
+++ b/Doc/c-api/veryhigh.rst
@@ -17,7 +17,7 @@ parameter. The available start symbols are :c:data:`Py_eval_input`,
following the functions which accept them as parameters.
Note also that several of these functions take :c:expr:`FILE*` parameters. One
-particular issue which needs to be handled carefully is that the :c:expr:`FILE`
+particular issue which needs to be handled carefully is that the :c:type:`FILE`
structure for different C libraries can be different and incompatible. Under
Windows (at least), it is possible for dynamically linked extensions to actually
use different libraries, so care should be taken that :c:expr:`FILE*` parameters
diff --git a/Doc/conf.py b/Doc/conf.py
index 09e12e2..bd01850 100644
--- a/Doc/conf.py
+++ b/Doc/conf.py
@@ -77,6 +77,58 @@ if venvdir is not None:
exclude_patterns.append(venvdir + '/*')
nitpick_ignore = [
+ # Standard C types
+ ('c:type', 'FILE'),
+ ('c:type', '__int'),
+ ('c:type', 'intmax_t'),
+ ('c:type', 'off_t'),
+ ('c:type', 'ptrdiff_t'),
+ ('c:type', 'siginfo_t'),
+ ('c:type', 'size_t'),
+ ('c:type', 'ssize_t'),
+ ('c:type', 'time_t'),
+ ('c:type', 'uintmax_t'),
+ ('c:type', 'va_list'),
+ ('c:type', 'wchar_t'),
+ # Standard C macros
+ ('c:macro', 'LLONG_MAX'),
+ ('c:macro', 'LLONG_MIN'),
+ ('c:macro', 'LONG_MAX'),
+ ('c:macro', 'LONG_MIN'),
+ # Standard C variables
+ ('c:data', 'errno'),
+ # Standard environment variables
+ ('envvar', 'BROWSER'),
+ ('envvar', 'COLUMNS'),
+ ('envvar', 'COMSPEC'),
+ ('envvar', 'DISPLAY'),
+ ('envvar', 'HOME'),
+ ('envvar', 'HOMEDRIVE'),
+ ('envvar', 'HOMEPATH'),
+ ('envvar', 'IDLESTARTUP'),
+ ('envvar', 'LANG'),
+ ('envvar', 'LANGUAGE'),
+ ('envvar', 'LC_ALL'),
+ ('envvar', 'LC_CTYPE'),
+ ('envvar', 'LC_COLLATE'),
+ ('envvar', 'LC_MESSAGES'),
+ ('envvar', 'LC_MONETARY'),
+ ('envvar', 'LC_NUMERIC'),
+ ('envvar', 'LC_TIME'),
+ ('envvar', 'LINES'),
+ ('envvar', 'LOGNAME'),
+ ('envvar', 'PAGER'),
+ ('envvar', 'PATH'),
+ ('envvar', 'PATHEXT'),
+ ('envvar', 'SOURCE_DATE_EPOCH'),
+ ('envvar', 'TEMP'),
+ ('envvar', 'TERM'),
+ ('envvar', 'TMP'),
+ ('envvar', 'TMPDIR'),
+ ('envvar', 'TZ'),
+ ('envvar', 'USER'),
+ ('envvar', 'USERNAME'),
+ ('envvar', 'USERPROFILE'),
# Do not error nit-picky mode builds when _SubParsersAction.add_parser cannot
# be resolved, as the method is currently undocumented. For context, see
# https://github.com/python/cpython/pull/103289.
diff --git a/Doc/library/array.rst b/Doc/library/array.rst
index 0afc217..ad62262 100644
--- a/Doc/library/array.rst
+++ b/Doc/library/array.rst
@@ -53,9 +53,9 @@ Notes:
It can be 16 bits or 32 bits depending on the platform.
.. versionchanged:: 3.9
- ``array('u')`` now uses ``wchar_t`` as C type instead of deprecated
+ ``array('u')`` now uses :c:type:`wchar_t` as C type instead of deprecated
``Py_UNICODE``. This change doesn't affect its behavior because
- ``Py_UNICODE`` is alias of ``wchar_t`` since Python 3.3.
+ ``Py_UNICODE`` is alias of :c:type:`wchar_t` since Python 3.3.
.. deprecated-removed:: 3.3 3.16
Please migrate to ``'w'`` typecode.
diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst
index 81509c0..c253a45 100644
--- a/Doc/library/ctypes.rst
+++ b/Doc/library/ctypes.rst
@@ -220,7 +220,7 @@ Fundamental data types
+----------------------+------------------------------------------+----------------------------+
| :class:`c_char` | :c:expr:`char` | 1-character bytes object |
+----------------------+------------------------------------------+----------------------------+
-| :class:`c_wchar` | :c:expr:`wchar_t` | 1-character string |
+| :class:`c_wchar` | :c:type:`wchar_t` | 1-character string |
+----------------------+------------------------------------------+----------------------------+
| :class:`c_byte` | :c:expr:`char` | int |
+----------------------+------------------------------------------+----------------------------+
@@ -243,9 +243,9 @@ Fundamental data types
| :class:`c_ulonglong` | :c:expr:`unsigned __int64` or | int |
| | :c:expr:`unsigned long long` | |
+----------------------+------------------------------------------+----------------------------+
-| :class:`c_size_t` | :c:expr:`size_t` | int |
+| :class:`c_size_t` | :c:type:`size_t` | int |
+----------------------+------------------------------------------+----------------------------+
-| :class:`c_ssize_t` | :c:expr:`ssize_t` or | int |
+| :class:`c_ssize_t` | :c:type:`ssize_t` or | int |
| | :c:expr:`Py_ssize_t` | |
+----------------------+------------------------------------------+----------------------------+
| :class:`c_time_t` | :c:type:`time_t` | int |
@@ -335,7 +335,7 @@ property::
The :func:`create_string_buffer` function replaces the old :func:`c_buffer`
function (which is still available as an alias). To create a mutable memory
-block containing unicode characters of the C type :c:expr:`wchar_t`, use the
+block containing unicode characters of the C type :c:type:`wchar_t`, use the
:func:`create_unicode_buffer` function.
@@ -478,7 +478,7 @@ By default functions are assumed to return the C :c:expr:`int` type. Other
return types can be specified by setting the :attr:`restype` attribute of the
function object.
-The C prototype of ``time()`` is ``time_t time(time_t *)``. Because ``time_t``
+The C prototype of ``time()`` is ``time_t time(time_t *)``. Because :c:type:`time_t`
might be of a different type than the default return type ``int``, you should
specify the ``restype``::
@@ -2407,7 +2407,7 @@ These are the fundamental ctypes data types:
.. class:: c_wchar
- Represents the C :c:expr:`wchar_t` datatype, and interprets the value as a
+ Represents the C :c:type:`wchar_t` datatype, and interprets the value as a
single character unicode string. The constructor accepts an optional string
initializer, the length of the string must be exactly one character.
diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index 127d161..5740591 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -4650,7 +4650,7 @@ written in Python, such as a mail server's external command delivery program.
:data:`WNOHANG` and :data:`WNOWAIT` are additional optional flags.
The return value is an object representing the data contained in the
- :c:type:`!siginfo_t` structure with the following attributes:
+ :c:type:`siginfo_t` structure with the following attributes:
* :attr:`!si_pid` (process ID)
* :attr:`!si_uid` (real user ID of the child)
diff --git a/Doc/library/struct.rst b/Doc/library/struct.rst
index 6d2739b..c94dfde 100644
--- a/Doc/library/struct.rst
+++ b/Doc/library/struct.rst
@@ -231,9 +231,9 @@ platform-dependent.
| ``Q`` | :c:expr:`unsigned long | integer | 8 | \(2) |
| | long` | | | |
+--------+--------------------------+--------------------+----------------+------------+
-| ``n`` | :c:expr:`ssize_t` | integer | | \(3) |
+| ``n`` | :c:type:`ssize_t` | integer | | \(3) |
+--------+--------------------------+--------------------+----------------+------------+
-| ``N`` | :c:expr:`size_t` | integer | | \(3) |
+| ``N`` | :c:type:`size_t` | integer | | \(3) |
+--------+--------------------------+--------------------+----------------+------------+
| ``e`` | \(6) | float | 2 | \(4) |
+--------+--------------------------+--------------------+----------------+------------+
diff --git a/Doc/library/venv.rst b/Doc/library/venv.rst
index 9e56725..2482441 100644
--- a/Doc/library/venv.rst
+++ b/Doc/library/venv.rst
@@ -60,7 +60,7 @@ running from a virtual environment.
A virtual environment may be "activated" using a script in its binary directory
(``bin`` on POSIX; ``Scripts`` on Windows).
-This will prepend that directory to your :envvar:`!PATH`, so that running
+This will prepend that directory to your :envvar:`PATH`, so that running
:program:`python` will invoke the environment's Python interpreter
and you can run installed scripts without having to use their full path.
The invocation of the activation script is platform-specific
@@ -100,10 +100,10 @@ In order to achieve this, scripts installed into virtual environments have
a "shebang" line which points to the environment's Python interpreter,
i.e. :samp:`#!/{<path-to-venv>}/bin/python`.
This means that the script will run with that interpreter regardless of the
-value of :envvar:`!PATH`. On Windows, "shebang" line processing is supported if
+value of :envvar:`PATH`. On Windows, "shebang" line processing is supported if
you have the :ref:`launcher` installed. Thus, double-clicking an installed
script in a Windows Explorer window should run it with the correct interpreter
-without the environment needing to be activated or on the :envvar:`!PATH`.
+without the environment needing to be activated or on the :envvar:`PATH`.
When a virtual environment has been activated, the :envvar:`!VIRTUAL_ENV`
environment variable is set to the path of the environment.
diff --git a/Doc/library/webbrowser.rst b/Doc/library/webbrowser.rst
index b6762f7..4667b81 100644
--- a/Doc/library/webbrowser.rst
+++ b/Doc/library/webbrowser.rst
@@ -20,7 +20,7 @@ will be used if graphical browsers are not available or an X11 display isn't
available. If text-mode browsers are used, the calling process will block until
the user exits the browser.
-If the environment variable :envvar:`!BROWSER` exists, it is interpreted as the
+If the environment variable :envvar:`BROWSER` exists, it is interpreted as the
:data:`os.pathsep`-separated list of browsers to try ahead of the platform
defaults. When the value of a list part contains the string ``%s``, then it is
interpreted as a literal browser command line to be used with the argument URL
@@ -97,7 +97,7 @@ The following functions are defined:
Setting *preferred* to ``True`` makes this browser a preferred result for
a :func:`get` call with no argument. Otherwise, this entry point is only
- useful if you plan to either set the :envvar:`!BROWSER` variable or call
+ useful if you plan to either set the :envvar:`BROWSER` variable or call
:func:`get` with a nonempty argument matching the name of a handler you
declare.
@@ -224,4 +224,4 @@ module-level convenience functions:
.. rubric:: Footnotes
.. [1] Executables named here without a full path will be searched in the
- directories given in the :envvar:`!PATH` environment variable.
+ directories given in the :envvar:`PATH` environment variable.
diff --git a/Doc/tools/.nitignore b/Doc/tools/.nitignore
index 87157f0..14d9b2e 100644
--- a/Doc/tools/.nitignore
+++ b/Doc/tools/.nitignore
@@ -91,7 +91,6 @@ Doc/library/codecs.rst
Doc/library/codeop.rst
Doc/library/collections.abc.rst
Doc/library/collections.rst
-Doc/library/compileall.rst
Doc/library/concurrent.futures.rst
Doc/library/concurrent.rst
Doc/library/configparser.rst
@@ -100,7 +99,6 @@ Doc/library/contextlib.rst
Doc/library/copy.rst
Doc/library/csv.rst
Doc/library/ctypes.rst
-Doc/library/curses.rst
Doc/library/datetime.rst
Doc/library/dbm.rst
Doc/library/decimal.rst
@@ -137,7 +135,6 @@ Doc/library/http.client.rst
Doc/library/http.cookiejar.rst
Doc/library/http.cookies.rst
Doc/library/http.server.rst
-Doc/library/idle.rst
Doc/library/importlib.resources.abc.rst
Doc/library/importlib.resources.rst
Doc/library/importlib.rst
@@ -165,11 +162,9 @@ Doc/library/pickletools.rst
Doc/library/platform.rst
Doc/library/plistlib.rst
Doc/library/poplib.rst
-Doc/library/posix.rst
Doc/library/pprint.rst
Doc/library/profile.rst
Doc/library/pty.rst
-Doc/library/py_compile.rst
Doc/library/pyclbr.rst
Doc/library/pydoc.rst
Doc/library/pyexpat.rst
@@ -192,7 +187,6 @@ Doc/library/ssl.rst
Doc/library/stat.rst
Doc/library/stdtypes.rst
Doc/library/string.rst
-Doc/library/struct.rst
Doc/library/subprocess.rst
Doc/library/sys.rst
Doc/library/sys_path_init.rst
@@ -254,7 +248,6 @@ Doc/tutorial/modules.rst
Doc/tutorial/stdlib2.rst
Doc/using/cmdline.rst
Doc/using/configure.rst
-Doc/using/unix.rst
Doc/using/windows.rst
Doc/whatsnew/2.0.rst
Doc/whatsnew/2.1.rst
diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst
index ac03af5..ea98069 100644
--- a/Doc/whatsnew/3.12.rst
+++ b/Doc/whatsnew/3.12.rst
@@ -1768,7 +1768,7 @@ Porting to Python 3.12
for example).
* Add support of more formatting options (left aligning, octals, uppercase
- hexadecimals, ``intmax_t``, ``ptrdiff_t``, ``wchar_t`` C
+ hexadecimals, :c:type:`intmax_t`, :c:type:`ptrdiff_t`, :c:type:`wchar_t` C
strings, variable width and precision) in :c:func:`PyUnicode_FromFormat` and
:c:func:`PyUnicode_FromFormatV`.
(Contributed by Serhiy Storchaka in :gh:`98836`.)
diff --git a/Doc/whatsnew/3.13.rst b/Doc/whatsnew/3.13.rst
index 5d4fa44..1d34d8a 100644
--- a/Doc/whatsnew/3.13.rst
+++ b/Doc/whatsnew/3.13.rst
@@ -329,7 +329,7 @@ Pending Removal in Python 3.15
Pending Removal in Python 3.16
------------------------------
-* :class:`array.array` ``'u'`` type (``wchar_t``):
+* :class:`array.array` ``'u'`` type (:c:type:`wchar_t`):
use the ``'w'`` type instead (``Py_UCS4``).
Pending Removal in Future Versions
@@ -802,8 +802,8 @@ Deprecated
----------
* Deprecate the old ``Py_UNICODE`` and ``PY_UNICODE_TYPE`` types: use directly
- the ``wchar_t`` type instead. Since Python 3.3, ``Py_UNICODE`` and
- ``PY_UNICODE_TYPE`` are just aliases to ``wchar_t``.
+ the :c:type:`wchar_t` type instead. Since Python 3.3, ``Py_UNICODE`` and
+ ``PY_UNICODE_TYPE`` are just aliases to :c:type:`wchar_t`.
(Contributed by Victor Stinner in :gh:`105156`.)
* Deprecate old Python initialization functions:
@@ -1013,8 +1013,8 @@ Pending Removal in Python 3.15
* :c:func:`PyImport_ImportModuleNoBlock`: use :c:func:`PyImport_ImportModule`.
* :c:func:`PyWeakref_GET_OBJECT`: use :c:func:`PyWeakref_GetRef` instead.
* :c:func:`PyWeakref_GetObject`: use :c:func:`PyWeakref_GetRef` instead.
-* :c:type:`!Py_UNICODE_WIDE` type: use ``wchar_t`` instead.
-* :c:type:`Py_UNICODE` type: use ``wchar_t`` instead.
+* :c:type:`!Py_UNICODE_WIDE` type: use :c:type:`wchar_t` instead.
+* :c:type:`Py_UNICODE` type: use :c:type:`wchar_t` instead.
* Python initialization functions:
* :c:func:`PySys_ResetWarnOptions`: clear :data:`sys.warnoptions` and
diff --git a/Doc/whatsnew/3.3.rst b/Doc/whatsnew/3.3.rst
index dbac741..911e5ba 100644
--- a/Doc/whatsnew/3.3.rst
+++ b/Doc/whatsnew/3.3.rst
@@ -1984,7 +1984,7 @@ the form '-rwxrwxrwx'.
struct
------
-The :mod:`struct` module now supports ``ssize_t`` and ``size_t`` via the
+The :mod:`struct` module now supports :c:type:`ssize_t` and :c:type:`size_t` via the
new codes ``n`` and ``N``, respectively. (Contributed by Antoine Pitrou
in :issue:`3163`.)
diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst
index 66610fa..1e30569 100644
--- a/Doc/whatsnew/3.5.rst
+++ b/Doc/whatsnew/3.5.rst
@@ -2192,7 +2192,7 @@ encode error with ``\N{...}`` escapes.
(Contributed by Serhiy Storchaka in :issue:`19676`.)
A new :c:func:`PyErr_FormatV` function similar to :c:func:`PyErr_Format`,
-but accepts a ``va_list`` argument.
+but accepts a :c:type:`va_list` argument.
(Contributed by Antoine Pitrou in :issue:`18711`.)
A new :c:data:`PyExc_RecursionError` exception.
diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst
index 9280f94..bf889b7 100644
--- a/Doc/whatsnew/3.9.rst
+++ b/Doc/whatsnew/3.9.rst
@@ -1115,9 +1115,9 @@ Changes in the Python API
``PyCF_ALLOW_TOP_LEVEL_AWAIT`` was clashing with ``CO_FUTURE_DIVISION``.
(Contributed by Batuhan Taskaya in :issue:`39562`)
-* ``array('u')`` now uses ``wchar_t`` as C type instead of ``Py_UNICODE``.
+* ``array('u')`` now uses :c:type:`wchar_t` as C type instead of ``Py_UNICODE``.
This change doesn't affect to its behavior because ``Py_UNICODE`` is alias
- of ``wchar_t`` since Python 3.3.
+ of :c:type:`wchar_t` since Python 3.3.
(Contributed by Inada Naoki in :issue:`34538`.)
* The :func:`logging.getLogger` API now returns the root logger when passed