]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-38387: Formally document PyDoc_STRVAR and PyDoc_STR macros (GH-16607)
authorBrad Solomon <brad.solomon.1124@gmail.com>
Mon, 27 Apr 2020 02:31:44 +0000 (22:31 -0400)
committerGitHub <noreply@github.com>
Mon, 27 Apr 2020 02:31:44 +0000 (21:31 -0500)
Adds a short description of `PyDoc_STRVAR` and `PyDoc_STR` to "Useful macros" section of C-API docs.

Currently, there is [one lone mention](https://docs.python.org/3/c-api/module.html?highlight=pydoc_strvar#c.PyModuleDef) in the C-API reference, despite the fact that `PyDoc_STRVAR` is ubiquitous to `Modules/`.

Additionally, this properly uses `c:macro` within `Doc/c-api/module.rst` to link.

Doc/c-api/intro.rst
Doc/c-api/module.rst
Misc/NEWS.d/next/Documentation/2019-10-06-23-44-15.bpo-38387.fZoq0S.rst [new file with mode: 0644]

index 5a99631bbbdcfb1f445844a7701df1f360056998..e89a788de0d503e3fb14bd69e1e300b395f9fbd0 100644 (file)
@@ -187,6 +187,39 @@ complete listing.
    .. versionchanged:: 3.8
       MSVC support was added.
 
+.. c:macro:: PyDoc_STRVAR(name, str)
+
+   Creates a variable with name ``name`` that can be used in docstrings.
+   If Python is built without docstrings, the value will be empty.
+
+   Use :c:macro:`PyDoc_STRVAR` for docstrings to support building
+   Python without docstrings, as specified in :pep:`7`.
+
+   Example::
+
+      PyDoc_STRVAR(pop_doc, "Remove and return the rightmost element.");
+
+      static PyMethodDef deque_methods[] = {
+          // ...
+          {"pop", (PyCFunction)deque_pop, METH_NOARGS, pop_doc},
+          // ...
+      }
+
+.. c:macro:: PyDoc_STR(str)
+
+   Creates a docstring for the given input string or an empty string
+   if docstrings are disabled.
+
+   Use :c:macro:`PyDoc_STR` in specifying docstrings to support
+   building Python without docstrings, as specified in :pep:`7`.
+
+   Example::
+
+      static PyMethodDef pysqlite_row_methods[] = {
+          {"keys", (PyCFunction)pysqlite_row_keys, METH_NOARGS,
+              PyDoc_STR("Returns the keys of the row.")},
+          {NULL, NULL}
+      };
 
 .. _api-objects:
 
index cf1df2807361b8a257af511c82d854fd6d4e2039..8a415dfa30a35e05b548cc8ba208d1ef0ca2901f 100644 (file)
@@ -153,7 +153,7 @@ or request "multi-phase initialization" by returning the definition struct itsel
    .. c:member:: const char *m_doc
 
       Docstring for the module; usually a docstring variable created with
-      :c:func:`PyDoc_STRVAR` is used.
+      :c:macro:`PyDoc_STRVAR` is used.
 
    .. c:member:: Py_ssize_t m_size
 
diff --git a/Misc/NEWS.d/next/Documentation/2019-10-06-23-44-15.bpo-38387.fZoq0S.rst b/Misc/NEWS.d/next/Documentation/2019-10-06-23-44-15.bpo-38387.fZoq0S.rst
new file mode 100644 (file)
index 0000000..a678fe5
--- /dev/null
@@ -0,0 +1 @@
+Document :c:macro:`PyDoc_STRVAR` macro in the C-API reference.