Argument Clinic How-To Release 3.9.5 Guido van Rossum and the Python development team June 01, 2021 Python Software Foundation Email: docs@python.org author Larry Hastings 1 Contents 1 The Goals Of Argument Clinic 2 2 Basic Concepts And Usage 2 3 Converting Your First Function 3 4 Advanced Topics 9 4.1 Symbolic default values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2 Renaming the C functions and variables generated by Argument Clinic . . . . . . . . . . . . . . . 9 4.3 Converting functions using PyArg_UnpackTuple . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.4 Optional Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.5 Using real Argument Clinic converters, instead of “legacy converters” . . . . . . . . . . . . . . . . 11 4.6 Py_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.7 Advanced converters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.8 Parameter default values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.9 The NULL default value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.10 Expressions specified as default values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.11 Using a return converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.12 Cloning existing functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.13 Calling Python code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.14 Using a “self converter” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.15 Writing a custom converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.16 Writing a custom return converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.17 METH_O and METH_NOARGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.18 tp_new and tp_init functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.19 Changing and redirecting Clinic’s output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.20 The #ifdef trick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.21 Using Argument Clinic in Python files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Index 24