gh-86457: Add docs for Argument Clinic @text_signature directive (#107747)

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
Erlend E. Aasland 2023-08-08 08:42:08 +02:00 committed by GitHub
parent 0db043dd5a
commit a9aeb99579
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 1 deletions

View File

@ -1900,6 +1900,40 @@ blocks embedded in Python files look slightly different. They look like this:
#/*[python checksum:...]*/ #/*[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: .. _clinic-howto-deprecate-positional:
How to deprecate passing parameters positionally How to deprecate passing parameters positionally

View File

@ -1,2 +1,2 @@
Argument Clinic now supports overriding automatically generated signature by Argument Clinic now supports overriding automatically generated signature by
using directive `@text_signature`. using directive `@text_signature`. See :ref:`clinic-howto-override-signature`.