Issue #19273: The marker comments Argument Clinic uses have been changed
to improve readability.
diff --git a/Doc/howto/clinic.rst b/Doc/howto/clinic.rst
index a22a11f..555fa68 100644
--- a/Doc/howto/clinic.rst
+++ b/Doc/howto/clinic.rst
@@ -35,12 +35,12 @@
Argument Clinic will scan over the file looking for lines that
look exactly like this::
- /*[clinic]
+ /*[clinic input]
When it finds one, it reads everything up to a line that looks
-like this::
+exactly like this::
- [clinic]*/
+ [clinic start generated code]*/
Everything in between these two lines is input for Argument Clinic.
All of these lines, including the beginning and ending comment
@@ -51,11 +51,11 @@
immediately after the block, followed by a comment containing a checksum.
The Argument Clinic block now looks like this::
- /*[clinic]
+ /*[clinic input]
... clinic input goes here ...
- [clinic]*/
+ [clinic start generated code]*/
... clinic output goes here ...
- /*[clinic checksum:...]*/
+ /*[clinic end generated code: checksum=...]*/
If you run Argument Clinic on the same file a second time, Argument Clinic
will discard the old output and write out the new output with a fresh checksum
@@ -68,9 +68,9 @@
For the sake of clarity, here's the terminology we'll use with Argument Clinic:
-* The first line of the comment (``/*[clinic]``) is the *start line*.
-* The last line of the initial comment (``[clinic]*/``) is the *end line*.
-* The last line (``/*[clinic checksum:...]*/``) is the *checksum line*.
+* The first line of the comment (``/*[clinic input]``) is the *start line*.
+* The last line of the initial comment (``[clinic start generated code]*/``) is the *end line*.
+* The last line (``/*[clinic end generated code: checksum=...]*/``) is the *checksum line*.
* In between the start line and the end line is the *input*.
* In between the end line and the checksum line is the *output*.
* All the text collectively, from the start line to the checksum line inclusively,
@@ -111,8 +111,8 @@
3. Add the following boilerplate above the function, creating our block::
- /*[clinic]
- [clinic]*/
+ /*[clinic input]
+ [clinic start generated code]*/
4. Cut the docstring and paste it in between the ``[clinic]`` lines,
removing all the junk that makes it a properly quoted C string.
@@ -122,9 +122,9 @@
Sample::
- /*[clinic]
+ /*[clinic input]
Write a pickled representation of obj to the open file.
- [clinic]*/
+ [clinic start generated code]*/
5. If your docstring doesn't have a "summary" line, Argument Clinic will
complain. So let's make sure it has one. The "summary" line should
@@ -143,11 +143,11 @@
Sample::
- /*[clinic]
+ /*[clinic input]
pickle.Pickler.dump
Write a pickled representation of obj to the open file.
- [clinic]*/
+ [clinic start generated code]*/
7. If this is the first time that module or class has been used with Argument
Clinic in this C file,
@@ -159,16 +159,16 @@
Sample::
- /*[clinic]
+ /*[clinic input]
module pickle
class pickle.Pickler
- [clinic]*/
+ [clinic start generated code]*/
- /*[clinic]
+ /*[clinic input]
pickle.Pickler.dump
Write a pickled representation of obj to the open file.
- [clinic]*/
+ [clinic start generated code]*/
8. Declare each of the parameters to the function. Each parameter
@@ -207,18 +207,18 @@
Sample::
- /*[clinic]
+ /*[clinic input]
module pickle
class pickle.Pickler
- [clinic]*/
+ [clinic start generated code]*/
- /*[clinic]
+ /*[clinic input]
pickle.Pickler.dump
obj: 'O'
Write a pickled representation of obj to the open file.
- [clinic]*/
+ [clinic start generated code]*/
9. If your function has ``|`` in the format string, meaning some
parameters have default values, you can ignore it. Argument
@@ -247,19 +247,19 @@
Sample::
- /*[clinic]
+ /*[clinic input]
module pickle
class pickle.Pickler
- [clinic]*/
+ [clinic start generated code]*/
- /*[clinic]
+ /*[clinic input]
pickle.Pickler.dump
obj: 'O'
/
Write a pickled representation of obj to the open file.
- [clinic]*/
+ [clinic start generated code]*/
11. It's helpful to write a per-parameter docstring for each parameter.
But per-parameter docstrings are optional; you can skip this step
@@ -274,12 +274,12 @@
Sample::
- /*[clinic]
+ /*[clinic input]
module pickle
class pickle.Pickler
- [clinic]*/
+ [clinic start generated code]*/
- /*[clinic]
+ /*[clinic input]
pickle.Pickler.dump
obj: 'O'
@@ -287,19 +287,19 @@
/
Write a pickled representation of obj to the open file.
- [clinic]*/
+ [clinic start generated code]*/
12. Save and close the file, then run ``Tools/clinic/clinic.py`` on it.
With luck everything worked and your block now has output! Reopen
the file in your text editor to see::
- /*[clinic]
+ /*[clinic input]
module pickle
class pickle.Pickler
- [clinic]*/
- /*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+ [clinic start generated code]*/
+ /*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
- /*[clinic]
+ /*[clinic input]
pickle.Pickler.dump
obj: 'O'
@@ -307,7 +307,7 @@
/
Write a pickled representation of obj to the open file.
- [clinic]*/
+ [clinic start generated code]*/
PyDoc_STRVAR(pickle_Pickler_dump__doc__,
"Write a pickled representation of obj to the open file.\n"
@@ -315,7 +315,7 @@
...
static PyObject *
pickle_Pickler_dump_impl(PyObject *self, PyObject *obj)
- /*[clinic checksum: 3bd30745bf206a48f8b576a1da3d90f55a0a4187]*/
+ /*[clinic end generated code: checksum=3bd30745bf206a48f8b576a1da3d90f55a0a4187]*/
Obviously, if Argument Clinic didn't produce any output, it's because
it found an error in your input. Keep fixing your errors and retrying
@@ -373,7 +373,7 @@
static return_type
your_function_impl(...)
- /*[clinic checksum: ...]*/
+ /*[clinic end generated code: checksum=...]*/
{
...
@@ -383,13 +383,13 @@
Sample::
- /*[clinic]
+ /*[clinic input]
module pickle
class pickle.Pickler
- [clinic]*/
- /*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+ [clinic start generated code]*/
+ /*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
- /*[clinic]
+ /*[clinic input]
pickle.Pickler.dump
obj: 'O'
@@ -397,7 +397,7 @@
/
Write a pickled representation of obj to the open file.
- [clinic]*/
+ [clinic start generated code]*/
PyDoc_STRVAR(pickle_Pickler_dump__doc__,
"Write a pickled representation of obj to the open file.\n"
@@ -405,7 +405,7 @@
...
static PyObject *
pickle_Pickler_dump_impl(PyObject *self, PyObject *obj)
- /*[clinic checksum: 3bd30745bf206a48f8b576a1da3d90f55a0a4187]*/
+ /*[clinic end generated code: checksum=3bd30745bf206a48f8b576a1da3d90f55a0a4187]*/
{
/* Check whether the Pickler was initialized correctly (issue3664).
Developers often forget to call __init__() in their subclasses, which
@@ -470,7 +470,7 @@
For example, if we wanted to rename the C function names generated for
``pickle.Pickler.dump``, it'd look like this::
- /*[clinic]
+ /*[clinic input]
pickle.Pickler.dump as pickler_dumper
...
@@ -515,7 +515,7 @@
uses optional groups to make the first two parameters and the last
parameter optional::
- /*[clinic]
+ /*[clinic input]
curses.window.addch
@@ -666,7 +666,7 @@
As an example, here's our sample ``pickle.Pickler.dump`` using the proper
converter::
- /*[clinic]
+ /*[clinic input]
pickle.Pickler.dump
obj: object
@@ -674,7 +674,7 @@
/
Write a pickled representation of obj to the open file.
- [clinic]*/
+ [clinic start generated code]*/
Argument Clinic will show you all the converters it has
available. For each converter it'll show you all the parameters
@@ -769,9 +769,9 @@
A Python block uses different delimiter lines than an Argument
Clinic function block. It looks like this::
- /*[python]
+ /*[python input]
# python code goes here
- [python]*/
+ [python start generated code]*/
All the code inside the Python block is executed at the
time it's parsed. All text written to stdout inside the block
@@ -780,9 +780,9 @@
As an example, here's a Python block that adds a static integer
variable to the C code::
- /*[python]
+ /*[python input]
print('static int __ignored_unused_variable__ = 0;')
- [python]*/
+ [python start generated code]*/
static int __ignored_unused_variable__ = 0;
/*[python checksum:...]*/
@@ -806,7 +806,7 @@
you can directly use Argument Clinic's existing ``self`` converter,
passing in the type you want to use as the ``type`` parameter::
- /*[clinic]
+ /*[clinic input]
_pickle.Pickler.dump
@@ -815,18 +815,18 @@
/
Write a pickled representation of the given object to the open file.
- [clinic]*/
+ [clinic start generated code]*/
On the other hand, if you have a lot of functions that will use the same
type for ``self``, it's best to create your own converter, subclassing
``self_converter`` but overwriting the ``type`` member::
- /*[clinic]
+ /*[clinic input]
class PicklerObject_converter(self_converter):
type = "PicklerObject *"
- [clinic]*/
+ [clinic start generated code]*/
- /*[clinic]
+ /*[clinic input]
_pickle.Pickler.dump
@@ -835,7 +835,7 @@
/
Write a pickled representation of the given object to the open file.
- [clinic]*/
+ [clinic start generated code]*/
@@ -917,14 +917,14 @@
Here's the simplest example of a custom converter, from ``Modules/zlibmodule.c``::
- /*[python]
+ /*[python input]
class uint_converter(CConverter):
type = 'unsigned int'
converter = 'uint_converter'
- [python]*/
- /*[python checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+ [python start generated code]*/
+ /*[python end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
This block adds a converter to Argument Clinic named ``uint``. Parameters
declared as ``uint`` will be declared as type ``unsigned int``, and will
@@ -963,8 +963,8 @@
Since Python comments are different from C comments, Argument Clinic
blocks embedded in Python files look slightly different. They look like this::
- #/*[python]
+ #/*[python input]
#print("def foo(): pass")
- #[python]*/
+ #[python start generated code]*/
def foo(): pass
#/*[python checksum:...]*/
diff --git a/Misc/NEWS b/Misc/NEWS
index 4be6cde..4602993 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -21,6 +21,9 @@
Tools/Demos
-----------
+- Issue #19273: The marker comments Argument Clinic uses have been changed
+ to improve readability.
+
- Issue #20157: When Argument Clinic renames a parameter because its name
collides with a C keyword, it no longer exposes that rename to PyArg_Parse.
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index 362618f..2a70337 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -134,11 +134,11 @@
#define STRICT_SYSV_CURSES
#endif
-/*[clinic]
+/*[clinic input]
module curses
class curses.window
-[clinic]*/
-/*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[clinic start generated code]*/
+/*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
/* Definition of exception curses.error */
@@ -555,7 +555,7 @@
/* Addch, Addstr, Addnstr */
-/*[clinic]
+/*[clinic input]
curses.window.addch
@@ -581,7 +581,7 @@
overwriting any character previously painted at that location.
By default, the character position and attributes are the
current settings for the window object.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(curses_window_addch__doc__,
"addch([x, y,] ch, [attr])\n"
@@ -650,7 +650,7 @@
static PyObject *
curses_window_addch_impl(PyObject *self, int group_left_1, int x, int y, PyObject *ch, int group_right_1, long attr)
-/*[clinic checksum: 44ed958b891cde91205e584c766e048f3999714f]*/
+/*[clinic end generated code: checksum=44ed958b891cde91205e584c766e048f3999714f]*/
{
PyCursesWindowObject *cwself = (PyCursesWindowObject *)self;
int coordinates_group = group_left_1;
diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c
index b4d4e2f..0ea2256 100644
--- a/Modules/_datetimemodule.c
+++ b/Modules/_datetimemodule.c
@@ -16,11 +16,11 @@
#include "datetime.h"
#undef Py_BUILD_CORE
-/*[clinic]
+/*[clinic input]
module datetime
class datetime.datetime
-[clinic]*/
-/*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[clinic start generated code]*/
+/*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
/* We require that C int be at least 32 bits, and use int virtually
* everywhere. In just a few cases we use a temp long, where a Python
@@ -4145,7 +4145,7 @@
tzinfo);
}
-/*[clinic]
+/*[clinic input]
@classmethod
datetime.datetime.now
@@ -4156,7 +4156,7 @@
Returns new datetime object representing current time local to tz.
If no tz is specified, uses local timezone.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(datetime_datetime_now__doc__,
"now(tz=None)\n"
@@ -4192,7 +4192,7 @@
static PyObject *
datetime_datetime_now_impl(PyTypeObject *cls, PyObject *tz)
-/*[clinic checksum: ca3d26a423b3f633b260c7622e303f0915a96f7c]*/
+/*[clinic end generated code: checksum=ca3d26a423b3f633b260c7622e303f0915a96f7c]*/
{
PyObject *self;
diff --git a/Modules/_dbmmodule.c b/Modules/_dbmmodule.c
index f9a0e5e..c9e16e3 100644
--- a/Modules/_dbmmodule.c
+++ b/Modules/_dbmmodule.c
@@ -28,11 +28,11 @@
#error "No ndbm.h available!"
#endif
-/*[clinic]
+/*[clinic input]
module dbm
class dbm.dbm
-[clinic]*/
-/*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[clinic start generated code]*/
+/*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
typedef struct {
PyObject_HEAD
@@ -49,13 +49,13 @@
static PyObject *DbmError;
-/*[python]
+/*[python input]
class dbmobject_converter(self_converter):
type = "dbmobject *"
def converter_init(self):
self.name = 'dp'
-[python]*/
-/*[python checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[python start generated code]*/
+/*[python end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
static PyObject *
newdbmobject(const char *file, int flags, int mode)
@@ -263,7 +263,7 @@
0, /* sq_inplace_repeat */
};
-/*[clinic]
+/*[clinic input]
dbm.dbm.get
@@ -276,7 +276,7 @@
/
Return the value for key if present, otherwise default.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(dbm_dbm_get__doc__,
"get(key, [default])\n"
@@ -318,7 +318,7 @@
static PyObject *
dbm_dbm_get_impl(dbmobject *dp, const char *key, Py_ssize_clean_t key_length, int group_right_1, PyObject *default_value)
-/*[clinic checksum: 28cf8928811bde51e535d67ae98ea039d79df717]*/
+/*[clinic end generated code: checksum=28cf8928811bde51e535d67ae98ea039d79df717]*/
{
datum dbm_key, val;
@@ -440,7 +440,7 @@
/* ----------------------------------------------------------------- */
-/*[clinic]
+/*[clinic input]
dbm.open as dbmopen
@@ -458,7 +458,7 @@
Return a database object.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(dbmopen__doc__,
"open(filename, flags=\'r\', mode=0o666)\n"
@@ -498,7 +498,7 @@
static PyObject *
dbmopen_impl(PyModuleDef *module, const char *filename, const char *flags, int mode)
-/*[clinic checksum: fb265f75641553ccd963f84c143b35c11f9121fc]*/
+/*[clinic end generated code: checksum=fb265f75641553ccd963f84c143b35c11f9121fc]*/
{
int iflags;
diff --git a/Modules/_opcode.c b/Modules/_opcode.c
index 55cffe1..fe7f8ab 100644
--- a/Modules/_opcode.c
+++ b/Modules/_opcode.c
@@ -1,12 +1,12 @@
#include "Python.h"
#include "opcode.h"
-/*[clinic]
+/*[clinic input]
module _opcode
-[clinic]*/
-/*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[clinic start generated code]*/
+/*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
-/*[clinic]
+/*[clinic input]
_opcode.stack_effect -> int
@@ -18,7 +18,7 @@
/
Compute the stack effect of the opcode.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_opcode_stack_effect__doc__,
"stack_effect(opcode, [oparg])\n"
@@ -64,10 +64,10 @@
static int
_opcode_stack_effect_impl(PyModuleDef *module, int opcode, int group_right_1, int oparg)
-/*[clinic checksum: e880e62dc7b0de73403026eaf4f8074aa106358b]*/
+/*[clinic end generated code: checksum=e880e62dc7b0de73403026eaf4f8074aa106358b]*/
{
int effect;
- if (HAS_ARG(opcode)) {
+ if (HAS_ARG(opcode)) {
if (!group_right_1) {
PyErr_SetString(PyExc_ValueError,
"stack_effect: opcode requires oparg but oparg was not specified");
diff --git a/Modules/_pickle.c b/Modules/_pickle.c
index 04a9837..917dd45 100644
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -4,16 +4,16 @@
PyDoc_STRVAR(pickle_module_doc,
"Optimized C implementation for the Python pickle module.");
-/*[clinic]
+/*[clinic input]
module _pickle
class _pickle.Pickler
class _pickle.PicklerMemoProxy
class _pickle.Unpickler
class _pickle.UnpicklerMemoProxy
-[clinic]*/
-/*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[clinic start generated code]*/
+/*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
-/*[python]
+/*[python input]
class PicklerObject_converter(self_converter):
type = "PicklerObject *"
@@ -25,8 +25,8 @@
class UnpicklerMemoProxyObject_converter(self_converter):
type = "UnpicklerMemoProxyObject *"
-[python]*/
-/*[python checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[python start generated code]*/
+/*[python end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
/* Bump this when new opcodes are added to the pickle protocol. */
enum {
@@ -140,7 +140,7 @@
PyObject *PickleError;
PyObject *PicklingError;
PyObject *UnpicklingError;
-
+
/* copyreg.dispatch_table, {type_object: pickling_function} */
PyObject *dispatch_table;
@@ -1770,7 +1770,7 @@
else if (self->bin &&
(sizeof(long) <= 4 ||
(val <= 0x7fffffffL && val >= (-0x7fffffffL - 1)))) {
- /* result fits in a signed 4-byte integer.
+ /* result fits in a signed 4-byte integer.
Note: we can't use -0x80000000L in the above condition because some
compilers (e.g., MSVC) will promote 0x80000000L to an unsigned type
@@ -3492,21 +3492,21 @@
cls = PyTuple_GET_ITEM(argtup, 0);
if (!PyType_Check(cls)) {
- PyErr_Format(st->PicklingError,
+ PyErr_Format(st->PicklingError,
"first item from NEWOBJ_EX argument tuple must "
"be a class, not %.200s", Py_TYPE(cls)->tp_name);
return -1;
}
args = PyTuple_GET_ITEM(argtup, 1);
if (!PyTuple_Check(args)) {
- PyErr_Format(st->PicklingError,
+ PyErr_Format(st->PicklingError,
"second item from NEWOBJ_EX argument tuple must "
"be a tuple, not %.200s", Py_TYPE(args)->tp_name);
return -1;
}
kwargs = PyTuple_GET_ITEM(argtup, 2);
if (!PyDict_Check(kwargs)) {
- PyErr_Format(st->PicklingError,
+ PyErr_Format(st->PicklingError,
"third item from NEWOBJ_EX argument tuple must "
"be a dict, not %.200s", Py_TYPE(kwargs)->tp_name);
return -1;
@@ -3874,7 +3874,7 @@
return 0;
}
-/*[clinic]
+/*[clinic input]
_pickle.Pickler.clear_memo
@@ -3886,7 +3886,7 @@
pickler has already seen, so that shared or recursive objects are
pickled by reference and not by value. This method is useful when
re-using picklers.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_Pickler_clear_memo__doc__,
"clear_memo()\n"
@@ -3915,7 +3915,7 @@
static PyObject *
_pickle_Pickler_clear_memo_impl(PicklerObject *self)
-/*[clinic checksum: 0574593b102fffb8e781d7bb9b536ceffc525ac1]*/
+/*[clinic end generated code: checksum=0574593b102fffb8e781d7bb9b536ceffc525ac1]*/
{
if (self->memo)
PyMemoTable_Clear(self->memo);
@@ -3923,7 +3923,7 @@
Py_RETURN_NONE;
}
-/*[clinic]
+/*[clinic input]
_pickle.Pickler.dump
@@ -3932,7 +3932,7 @@
/
Write a pickled representation of the given object to the open file.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_Pickler_dump__doc__,
"dump(obj)\n"
@@ -3943,7 +3943,7 @@
static PyObject *
_pickle_Pickler_dump(PicklerObject *self, PyObject *obj)
-/*[clinic checksum: b72a69ec98737fabf66dae7c5a3210178bdbd3e6]*/
+/*[clinic end generated code: checksum=b72a69ec98737fabf66dae7c5a3210178bdbd3e6]*/
{
/* Check whether the Pickler was initialized correctly (issue3664).
Developers often forget to call __init__() in their subclasses, which
@@ -4018,7 +4018,7 @@
}
-/*[clinic]
+/*[clinic input]
_pickle.Pickler.__init__
@@ -4045,7 +4045,7 @@
If *fix_imports* is True and protocol is less than 3, pickle will try
to map the new Python 3 names to the old module names used in Python
2, so that the pickle data stream is readable with Python 2.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_Pickler___init____doc__,
"__init__(file, protocol=None, fix_imports=True)\n"
@@ -4095,7 +4095,7 @@
static PyObject *
_pickle_Pickler___init___impl(PicklerObject *self, PyObject *file, PyObject *protocol, int fix_imports)
-/*[clinic checksum: 2b5ce6452544600478cf9f4b701ab9d9b5efbab9]*/
+/*[clinic end generated code: checksum=2b5ce6452544600478cf9f4b701ab9d9b5efbab9]*/
{
_Py_IDENTIFIER(persistent_id);
_Py_IDENTIFIER(dispatch_table);
@@ -4173,13 +4173,13 @@
PicklerObject *pickler; /* Pickler whose memo table we're proxying. */
} PicklerMemoProxyObject;
-/*[clinic]
+/*[clinic input]
_pickle.PicklerMemoProxy.clear
self: PicklerMemoProxyObject
Remove all items from memo.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_PicklerMemoProxy_clear__doc__,
"clear()\n"
@@ -4203,20 +4203,20 @@
static PyObject *
_pickle_PicklerMemoProxy_clear_impl(PicklerMemoProxyObject *self)
-/*[clinic checksum: c6ca252530ccb3ea2f4b33507b51b183f23b24c7]*/
+/*[clinic end generated code: checksum=c6ca252530ccb3ea2f4b33507b51b183f23b24c7]*/
{
if (self->pickler->memo)
PyMemoTable_Clear(self->pickler->memo);
Py_RETURN_NONE;
}
-/*[clinic]
+/*[clinic input]
_pickle.PicklerMemoProxy.copy
self: PicklerMemoProxyObject
Copy the memo to a new object.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_PicklerMemoProxy_copy__doc__,
"copy()\n"
@@ -4240,7 +4240,7 @@
static PyObject *
_pickle_PicklerMemoProxy_copy_impl(PicklerMemoProxyObject *self)
-/*[clinic checksum: 808c4d5a37359ed5fb2efe81dbe5ff480719f470]*/
+/*[clinic end generated code: checksum=808c4d5a37359ed5fb2efe81dbe5ff480719f470]*/
{
Py_ssize_t i;
PyMemoTable *memo;
@@ -4277,13 +4277,13 @@
return NULL;
}
-/*[clinic]
+/*[clinic input]
_pickle.PicklerMemoProxy.__reduce__
self: PicklerMemoProxyObject
Implement pickle support.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_PicklerMemoProxy___reduce____doc__,
"__reduce__()\n"
@@ -4307,7 +4307,7 @@
static PyObject *
_pickle_PicklerMemoProxy___reduce___impl(PicklerMemoProxyObject *self)
-/*[clinic checksum: 2293152bdf53951a012d430767b608f5fb4213b5]*/
+/*[clinic end generated code: checksum=2293152bdf53951a012d430767b608f5fb4213b5]*/
{
PyObject *reduce_value, *dict_args;
PyObject *contents = _pickle_PicklerMemoProxy_copy_impl(self);
@@ -5348,12 +5348,12 @@
Py_DECREF(args);
return -1;
}
-
+
if (!PyType_Check(cls)) {
Py_DECREF(kwargs);
Py_DECREF(args);
Py_DECREF(cls);
- PyErr_Format(st->UnpicklingError,
+ PyErr_Format(st->UnpicklingError,
"NEWOBJ_EX class argument must be a type, not %.200s",
Py_TYPE(cls)->tp_name);
return -1;
@@ -6317,7 +6317,7 @@
return value;
}
-/*[clinic]
+/*[clinic input]
_pickle.Unpickler.load
@@ -6326,7 +6326,7 @@
Read a pickled object representation from the open file object given
in the constructor, and return the reconstituted object hierarchy
specified therein.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_Unpickler_load__doc__,
"load()\n"
@@ -6354,7 +6354,7 @@
static PyObject *
_pickle_Unpickler_load_impl(PyObject *self)
-/*[clinic checksum: 55f35fcaf034817e75c355ec50b7878577355899]*/
+/*[clinic end generated code: checksum=55f35fcaf034817e75c355ec50b7878577355899]*/
{
UnpicklerObject *unpickler = (UnpicklerObject*)self;
@@ -6377,7 +6377,7 @@
function is used for loading any global (i.e., functions), not just
classes. The name is kept only for backward compatibility. */
-/*[clinic]
+/*[clinic input]
_pickle.Unpickler.find_class
@@ -6394,7 +6394,7 @@
This method is called whenever a class or a function object is
needed. Both arguments passed are str objects.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_Unpickler_find_class__doc__,
"find_class(module_name, global_name)\n"
@@ -6432,7 +6432,7 @@
static PyObject *
_pickle_Unpickler_find_class_impl(UnpicklerObject *self, PyObject *module_name, PyObject *global_name)
-/*[clinic checksum: 1f353d13a32c9d94feb1466b3c2d0529a7e5650e]*/
+/*[clinic end generated code: checksum=1f353d13a32c9d94feb1466b3c2d0529a7e5650e]*/
{
PyObject *global;
PyObject *modules_dict;
@@ -6581,7 +6581,7 @@
return 0;
}
-/*[clinic]
+/*[clinic input]
_pickle.Unpickler.__init__
@@ -6612,7 +6612,7 @@
instances pickled by Python 2; these default to 'ASCII' and 'strict',
respectively. The *encoding* can be 'bytes' to read these 8-bit
string instances as bytes objects.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_Unpickler___init____doc__,
"__init__(file, *, fix_imports=True, encoding=\'ASCII\', errors=\'strict\')\n"
@@ -6665,7 +6665,7 @@
static PyObject *
_pickle_Unpickler___init___impl(UnpicklerObject *self, PyObject *file, int fix_imports, const char *encoding, const char *errors)
-/*[clinic checksum: 9ce6783224e220573d42a94fe1bb7199d6f1c5a6]*/
+/*[clinic end generated code: checksum=9ce6783224e220573d42a94fe1bb7199d6f1c5a6]*/
{
_Py_IDENTIFIER(persistent_load);
@@ -6737,13 +6737,13 @@
UnpicklerObject *unpickler;
} UnpicklerMemoProxyObject;
-/*[clinic]
+/*[clinic input]
_pickle.UnpicklerMemoProxy.clear
self: UnpicklerMemoProxyObject
Remove all items from memo.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_UnpicklerMemoProxy_clear__doc__,
"clear()\n"
@@ -6767,7 +6767,7 @@
static PyObject *
_pickle_UnpicklerMemoProxy_clear_impl(UnpicklerMemoProxyObject *self)
-/*[clinic checksum: e0f99c26d48444a3f58f598bec3190c66595fce7]*/
+/*[clinic end generated code: checksum=e0f99c26d48444a3f58f598bec3190c66595fce7]*/
{
_Unpickler_MemoCleanup(self->unpickler);
self->unpickler->memo = _Unpickler_NewMemo(self->unpickler->memo_size);
@@ -6776,13 +6776,13 @@
Py_RETURN_NONE;
}
-/*[clinic]
+/*[clinic input]
_pickle.UnpicklerMemoProxy.copy
self: UnpicklerMemoProxyObject
Copy the memo to a new object.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_UnpicklerMemoProxy_copy__doc__,
"copy()\n"
@@ -6806,7 +6806,7 @@
static PyObject *
_pickle_UnpicklerMemoProxy_copy_impl(UnpicklerMemoProxyObject *self)
-/*[clinic checksum: 8c0ab91c0b694ea71a1774650898a760d1ab4765]*/
+/*[clinic end generated code: checksum=8c0ab91c0b694ea71a1774650898a760d1ab4765]*/
{
Py_ssize_t i;
PyObject *new_memo = PyDict_New();
@@ -6836,13 +6836,13 @@
return NULL;
}
-/*[clinic]
+/*[clinic input]
_pickle.UnpicklerMemoProxy.__reduce__
self: UnpicklerMemoProxyObject
Implement pickling support.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_UnpicklerMemoProxy___reduce____doc__,
"__reduce__()\n"
@@ -6866,7 +6866,7 @@
static PyObject *
_pickle_UnpicklerMemoProxy___reduce___impl(UnpicklerMemoProxyObject *self)
-/*[clinic checksum: 4ee76a65511291f0de2e9e63db395d2e5d6d8df6]*/
+/*[clinic end generated code: checksum=4ee76a65511291f0de2e9e63db395d2e5d6d8df6]*/
{
PyObject *reduce_value;
PyObject *constructor_args;
@@ -7141,7 +7141,7 @@
0, /*tp_is_gc*/
};
-/*[clinic]
+/*[clinic input]
_pickle.dump
@@ -7172,7 +7172,7 @@
If *fix_imports* is True and protocol is less than 3, pickle will try
to map the new Python 3 names to the old module names used in Python
2, so that the pickle data stream is readable with Python 2.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_dump__doc__,
"dump(obj, file, protocol=None, *, fix_imports=True)\n"
@@ -7226,7 +7226,7 @@
static PyObject *
_pickle_dump_impl(PyModuleDef *module, PyObject *obj, PyObject *file, PyObject *protocol, int fix_imports)
-/*[clinic checksum: eb5c23e64da34477178230b704d2cc9c6b6650ea]*/
+/*[clinic end generated code: checksum=eb5c23e64da34477178230b704d2cc9c6b6650ea]*/
{
PicklerObject *pickler = _Pickler_New();
@@ -7253,7 +7253,7 @@
return NULL;
}
-/*[clinic]
+/*[clinic input]
_pickle.dumps
@@ -7275,7 +7275,7 @@
If *fix_imports* is True and *protocol* is less than 3, pickle will
try to map the new Python 3 names to the old module names used in
Python 2, so that the pickle data stream is readable with Python 2.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_dumps__doc__,
"dumps(obj, protocol=None, *, fix_imports=True)\n"
@@ -7320,7 +7320,7 @@
static PyObject *
_pickle_dumps_impl(PyModuleDef *module, PyObject *obj, PyObject *protocol, int fix_imports)
-/*[clinic checksum: e9b915d61202a9692cb6c6718db74fe54fc9c4d1]*/
+/*[clinic end generated code: checksum=e9b915d61202a9692cb6c6718db74fe54fc9c4d1]*/
{
PyObject *result;
PicklerObject *pickler = _Pickler_New();
@@ -7343,7 +7343,7 @@
return NULL;
}
-/*[clinic]
+/*[clinic input]
_pickle.load
@@ -7376,7 +7376,7 @@
instances pickled by Python 2; these default to 'ASCII' and 'strict',
respectively. The *encoding* can be 'bytes' to read these 8-bit
string instances as bytes objects.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_load__doc__,
"load(file, *, fix_imports=True, encoding=\'ASCII\', errors=\'strict\')\n"
@@ -7432,7 +7432,7 @@
static PyObject *
_pickle_load_impl(PyModuleDef *module, PyObject *file, int fix_imports, const char *encoding, const char *errors)
-/*[clinic checksum: b41f06970e57acf2fd602e4b7f88e3f3e1e53087]*/
+/*[clinic end generated code: checksum=b41f06970e57acf2fd602e4b7f88e3f3e1e53087]*/
{
PyObject *result;
UnpicklerObject *unpickler = _Unpickler_New();
@@ -7457,7 +7457,7 @@
return NULL;
}
-/*[clinic]
+/*[clinic input]
_pickle.loads
@@ -7481,7 +7481,7 @@
instances pickled by Python 2; these default to 'ASCII' and 'strict',
respectively. The *encoding* can be 'bytes' to read these 8-bit
string instances as bytes objects.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_pickle_loads__doc__,
"loads(data, *, fix_imports=True, encoding=\'ASCII\', errors=\'strict\')\n"
@@ -7528,7 +7528,7 @@
static PyObject *
_pickle_loads_impl(PyModuleDef *module, PyObject *data, int fix_imports, const char *encoding, const char *errors)
-/*[clinic checksum: 0663de43aca6c21508a777e29d98c9c3a6e7f72d]*/
+/*[clinic end generated code: checksum=0663de43aca6c21508a777e29d98c9c3a6e7f72d]*/
{
PyObject *result;
UnpicklerObject *unpickler = _Unpickler_New();
diff --git a/Modules/_weakref.c b/Modules/_weakref.c
index 80de5da..a73dcdb 100644
--- a/Modules/_weakref.c
+++ b/Modules/_weakref.c
@@ -4,12 +4,12 @@
#define GET_WEAKREFS_LISTPTR(o) \
((PyWeakReference **) PyObject_GET_WEAKREFS_LISTPTR(o))
-/*[clinic]
+/*[clinic input]
module _weakref
-[clinic]*/
-/*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[clinic start generated code]*/
+/*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
-/*[clinic]
+/*[clinic input]
_weakref.getweakrefcount -> Py_ssize_t
@@ -17,7 +17,7 @@
/
Return the number of weak references to 'object'.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(_weakref_getweakrefcount__doc__,
"getweakrefcount(object)\n"
@@ -45,13 +45,13 @@
static Py_ssize_t
_weakref_getweakrefcount_impl(PyModuleDef *module, PyObject *object)
-/*[clinic checksum: 436e8fbe0297434375f039d8c2d9fc3a9bbe773c]*/
+/*[clinic end generated code: checksum=436e8fbe0297434375f039d8c2d9fc3a9bbe773c]*/
{
PyWeakReference **list;
if (!PyType_SUPPORTS_WEAKREFS(Py_TYPE(object)))
return 0;
-
+
list = GET_WEAKREFS_LISTPTR(object);
return _PyWeakref_GetWeakrefCount(*list);
}
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 1258670..3a66316 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -181,10 +181,10 @@
#endif /* ! __WATCOMC__ || __QNX__ */
-/*[clinic]
+/*[clinic input]
module os
-[clinic]*/
-/*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[clinic start generated code]*/
+/*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
#ifndef _MSC_VER
@@ -2355,7 +2355,7 @@
#endif
-/*[python]
+/*[python input]
class path_t_converter(CConverter):
@@ -2396,10 +2396,10 @@
self.c_default = 'DEFAULT_DIR_FD'
-[python]*/
-/*[python checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[python start generated code]*/
+/*[python end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
-/*[clinic]
+/*[clinic input]
os.stat -> object(doc_default='stat_result')
@@ -2427,7 +2427,7 @@
It's an error to use dir_fd or follow_symlinks when specifying path as
an open file descriptor.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(os_stat__doc__,
"stat(path, *, dir_fd=None, follow_symlinks=True)\n"
@@ -2481,7 +2481,7 @@
static PyObject *
os_stat_impl(PyModuleDef *module, path_t *path, int dir_fd, int follow_symlinks)
-/*[clinic checksum: 85a71ad602e89f8e280118da976f70cd2f9abdf1]*/
+/*[clinic end generated code: checksum=85a71ad602e89f8e280118da976f70cd2f9abdf1]*/
{
return posix_do_stat("stat", path, dir_fd, follow_symlinks);
}
@@ -2522,7 +2522,7 @@
#else
#define OS_ACCESS_DIR_FD_CONVERTER dir_fd_unavailable
#endif
-/*[clinic]
+/*[clinic input]
os.access -> object(doc_default='True if granted, False otherwise')
path: path_t(allow_fd=True)
@@ -2559,7 +2559,7 @@
routine can be used in a suid/sgid environment to test if the invoking user
has the specified access to the path.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(os_access__doc__,
"access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)\n"
@@ -2622,7 +2622,7 @@
static PyObject *
os_access_impl(PyModuleDef *module, path_t *path, int mode, int dir_fd, int effective_ids, int follow_symlinks)
-/*[clinic checksum: 636e835c36562a2fc11acab75314634127fdf769]*/
+/*[clinic end generated code: checksum=636e835c36562a2fc11acab75314634127fdf769]*/
{
PyObject *return_value = NULL;
@@ -2706,7 +2706,7 @@
#ifdef HAVE_TTYNAME
-/*[clinic]
+/*[clinic input]
os.ttyname -> DecodeFSDefault
fd: int
@@ -2715,7 +2715,7 @@
/
Return the name of the terminal device connected to 'fd'.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(os_ttyname__doc__,
"ttyname(fd)\n"
@@ -2752,7 +2752,7 @@
static char *
os_ttyname_impl(PyModuleDef *module, int fd)
-/*[clinic checksum: 0f368134dc0a7f21f25185e2e6bacf7675fb473a]*/
+/*[clinic end generated code: checksum=0f368134dc0a7f21f25185e2e6bacf7675fb473a]*/
{
char *ret;
diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c
index 0261d71..d12e438 100644
--- a/Modules/unicodedata.c
+++ b/Modules/unicodedata.c
@@ -17,11 +17,11 @@
#include "ucnhash.h"
#include "structmember.h"
-/*[clinic]
+/*[clinic input]
module unicodedata
class unicodedata.UCD
-[clinic]*/
-/*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[clinic start generated code]*/
+/*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
/* character properties */
@@ -113,7 +113,7 @@
/* --- Module API --------------------------------------------------------- */
-/*[clinic]
+/*[clinic input]
unicodedata.UCD.decimal
@@ -126,7 +126,7 @@
Returns the decimal value assigned to the Unicode character unichr
as integer. If no such value is defined, default is returned, or, if
not given, ValueError is raised.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(unicodedata_UCD_decimal__doc__,
"decimal(unichr, default=None)\n"
@@ -161,7 +161,7 @@
static PyObject *
unicodedata_UCD_decimal_impl(PyObject *self, PyUnicodeObject *unichr, PyObject *default_value)
-/*[clinic checksum: 73edde0e9cd5913ea174c4fa81504369761b7426]*/
+/*[clinic end generated code: checksum=73edde0e9cd5913ea174c4fa81504369761b7426]*/
{
PyUnicodeObject *v = (PyUnicodeObject *)unichr;
int have_old = 0;
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c
index 7f44c4a..5139888 100644
--- a/Modules/zlibmodule.c
+++ b/Modules/zlibmodule.c
@@ -81,12 +81,12 @@
PyErr_Format(ZlibError, "Error %d %s: %.200s", err, msg, zmsg);
}
-/*[clinic]
+/*[clinic input]
module zlib
class zlib.Compress
class zlib.Decompress
-[clinic]*/
-/*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[clinic start generated code]*/
+/*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
PyDoc_STRVAR(compressobj__doc__,
"compressobj(level=-1, method=DEFLATED, wbits=15, memlevel=8,\n"
@@ -164,7 +164,7 @@
PyMem_RawFree(ptr);
}
-/*[clinic]
+/*[clinic input]
zlib.compress
bytes: Py_buffer
@@ -177,7 +177,7 @@
Returns compressed string.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(zlib_compress__doc__,
"compress(bytes, [level])\n"
@@ -227,7 +227,7 @@
static PyObject *
zlib_compress_impl(PyModuleDef *module, Py_buffer *bytes, int group_right_1, int level)
-/*[clinic checksum: 9f055a396620bc1a8a13d74c3496249528b32b0d]*/
+/*[clinic end generated code: checksum=9f055a396620bc1a8a13d74c3496249528b32b0d]*/
{
PyObject *ReturnVal = NULL;
Byte *input, *output = NULL;
@@ -306,14 +306,14 @@
return ReturnVal;
}
-/*[python]
+/*[python input]
class uint_converter(CConverter):
type = 'unsigned int'
converter = 'uint_converter'
-[python]*/
-/*[python checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[python start generated code]*/
+/*[python end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
static int
uint_converter(PyObject *obj, void *ptr)
@@ -743,7 +743,7 @@
return 0;
}
-/*[clinic]
+/*[clinic input]
zlib.Decompress.decompress
@@ -762,7 +762,7 @@
After calling this function, some of the input data may still be stored in
internal buffers for later processing.
Call the flush() method to clear these buffers.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(zlib_Decompress_decompress__doc__,
"decompress(data, max_length=0)\n"
@@ -808,7 +808,7 @@
static PyObject *
zlib_Decompress_decompress_impl(compobject *self, Py_buffer *data, unsigned int max_length)
-/*[clinic checksum: 5b1e4f9f1ef8eca55fff78356f9df0c81232ed3b]*/
+/*[clinic end generated code: checksum=5b1e4f9f1ef8eca55fff78356f9df0c81232ed3b]*/
{
int err;
unsigned int old_length, length = DEFAULTALLOC;
@@ -1026,13 +1026,13 @@
#ifdef HAVE_ZLIB_COPY
-/*[clinic]
+/*[clinic input]
zlib.Compress.copy
self: self(type="compobject *")
Return a copy of the compression object.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(zlib_Compress_copy__doc__,
"copy()\n"
@@ -1056,7 +1056,7 @@
static PyObject *
zlib_Compress_copy_impl(compobject *self)
-/*[clinic checksum: 2f454ee15be3bc53cfb4e845c3f891f68be4c8e4]*/
+/*[clinic end generated code: checksum=2f454ee15be3bc53cfb4e845c3f891f68be4c8e4]*/
{
compobject *retval = NULL;
int err;
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index bfc730b..910b48f 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -69,10 +69,10 @@
#include "Python.h"
#include "stringlib/eq.h"
-/*[clinic]
+/*[clinic input]
class dict
-[clinic]*/
-/*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[clinic start generated code]*/
+/*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
typedef struct {
/* Cached hash code of me_key. */
@@ -2164,7 +2164,7 @@
return res;
}
-/*[clinic]
+/*[clinic input]
@coexist
dict.__contains__
@@ -2173,7 +2173,7 @@
/
True if D has a key k, else False"
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(dict___contains____doc__,
"__contains__(key)\n"
@@ -2184,7 +2184,7 @@
static PyObject *
dict___contains__(PyObject *self, PyObject *key)
-/*[clinic checksum: 3bbac5ce898ae630d9668fa1c8b3afb645ff22e8]*/
+/*[clinic end generated code: checksum=3bbac5ce898ae630d9668fa1c8b3afb645ff22e8]*/
{
register PyDictObject *mp = (PyDictObject *)self;
Py_hash_t hash;
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index fc6f0d0..48eccf7 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -47,10 +47,10 @@
#include <windows.h>
#endif
-/*[clinic]
+/*[clinic input]
class str
-[clinic]*/
-/*[clinic checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
+[clinic start generated code]*/
+/*[clinic end generated code: checksum=da39a3ee5e6b4b0d3255bfef95601890afd80709]*/
/* --- Globals ------------------------------------------------------------
@@ -12860,7 +12860,7 @@
return case_operation(self, do_swapcase);
}
-/*[clinic]
+/*[clinic input]
@staticmethod
str.maketrans as unicode_maketrans
@@ -12882,7 +12882,7 @@
in the resulting dictionary, each character in x will be mapped to the
character at the same position in y. If there is a third argument, it
must be a string, whose characters will be mapped to None in the result.
-[clinic]*/
+[clinic start generated code]*/
PyDoc_STRVAR(unicode_maketrans__doc__,
"maketrans(x, y=None, z=None)\n"
@@ -12922,7 +12922,7 @@
static PyObject *
unicode_maketrans_impl(void *null, PyObject *x, PyObject *y, PyObject *z)
-/*[clinic checksum: 7f76f414a0dfd0c614e0d4717872eeb520516da7]*/
+/*[clinic end generated code: checksum=7f76f414a0dfd0c614e0d4717872eeb520516da7]*/
{
PyObject *new = NULL, *key, *value;
Py_ssize_t i = 0;
diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py
index 5378a0b..421b9e3 100755
--- a/Tools/clinic/clinic.py
+++ b/Tools/clinic/clinic.py
@@ -291,10 +291,10 @@
class PythonLanguage(Language):
language = 'Python'
- start_line = "#/*[{dsl_name}]"
+ start_line = "#/*[{dsl_name} input]"
body_prefix = "#"
- stop_line = "#[{dsl_name}]*/"
- checksum_line = "#/*[{dsl_name} checksum: {checksum}]*/"
+ stop_line = "#[{dsl_name} start generated code]*/"
+ checksum_line = "#/*[{dsl_name} end generated code: checksum={checksum}]*/"
def permute_left_option_groups(l):
@@ -359,11 +359,12 @@
class CLanguage(Language):
+ body_prefix = "#"
language = 'C'
- start_line = "/*[{dsl_name}]"
+ start_line = "/*[{dsl_name} input]"
body_prefix = ""
- stop_line = "[{dsl_name}]*/"
- checksum_line = "/*[{dsl_name} checksum: {checksum}]*/"
+ stop_line = "[{dsl_name} start generated code]*/"
+ checksum_line = "/*[{dsl_name} end generated code: checksum={checksum}]*/"
def render(self, signatures):
function = None