Skip to content

Commit

Permalink
pythongh-86457: Add docs for Argument Clinic @text_signature directive (
Browse files Browse the repository at this point in the history
python#107747)

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
  • Loading branch information
erlend-aasland and AlexWaygood committed Aug 8, 2023
1 parent 0db043d commit a9aeb99
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 1 deletion.
34 changes: 34 additions & 0 deletions Doc/howto/clinic.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1900,6 +1900,40 @@ blocks embedded in Python files look slightly different. They look like this:
#/*[python checksum:...]*/
.. _clinic-howto-override-signature:

How to override the generated signature
---------------------------------------

You can use the ``@text_signature`` directive to override the default generated
signature in the docstring.
This can be useful for complex signatures that Argument Clinic cannot handle.
The ``@text_signature`` directive takes one argument:
the custom signature as a string.
The provided signature is copied verbatim to the generated docstring.

Example from :source:`Objects/codeobject.c`::

/*[clinic input]
@text_signature "($self, /, **changes)"
code.replace
*
co_argcount: int(c_default="self->co_argcount") = unchanged
co_posonlyargcount: int(c_default="self->co_posonlyargcount") = unchanged
# etc ...

Return a copy of the code object with new values for the specified fields.
[clinic start generated output]*/

The generated docstring ends up looking like this::

Doc_STRVAR(code_replace__doc__,
"replace($self, /, **changes)\n"
"--\n"
"\n"
"Return a copy of the code object with new values for the specified fields.");


.. _clinic-howto-deprecate-positional:

How to deprecate passing parameters positionally
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
Argument Clinic now supports overriding automatically generated signature by
using directive `@text_signature`.
using directive `@text_signature`. See :ref:`clinic-howto-override-signature`.

0 comments on commit a9aeb99

Please sign in to comment.