summaryrefslogtreecommitdiffstats
path: root/Python/clinic
diff options
context:
space:
mode:
authorPablo Galindo Salgado <Pablogsal@gmail.com>2021-08-24 16:50:05 (GMT)
committerGitHub <noreply@github.com>2021-08-24 16:50:05 (GMT)
commita24676bedcd332dd7e6fa5521d0449206391d190 (patch)
tree45ccbb5c30c4debd12c08df5edbdb87e38353348 /Python/clinic
parent9ed523159c7ba840dbf403e02498eeae1b5d3ed9 (diff)
downloadcpython-a24676bedcd332dd7e6fa5521d0449206391d190.zip
cpython-a24676bedcd332dd7e6fa5521d0449206391d190.tar.gz
cpython-a24676bedcd332dd7e6fa5521d0449206391d190.tar.bz2
Add tests for the C tokenizer and expose it as a private module (GH-27924)
Diffstat (limited to 'Python/clinic')
-rw-r--r--Python/clinic/Python-tokenize.c.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/Python/clinic/Python-tokenize.c.h b/Python/clinic/Python-tokenize.c.h
new file mode 100644
index 0000000..050b4d4
--- /dev/null
+++ b/Python/clinic/Python-tokenize.c.h
@@ -0,0 +1,41 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+static PyObject *
+tokenizeriter_new_impl(PyTypeObject *type, const char *source);
+
+static PyObject *
+tokenizeriter_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
+{
+ PyObject *return_value = NULL;
+ static const char * const _keywords[] = {"source", NULL};
+ static _PyArg_Parser _parser = {NULL, _keywords, "tokenizeriter", 0};
+ PyObject *argsbuf[1];
+ PyObject * const *fastargs;
+ Py_ssize_t nargs = PyTuple_GET_SIZE(args);
+ const char *source;
+
+ fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 1, 0, argsbuf);
+ if (!fastargs) {
+ goto exit;
+ }
+ if (!PyUnicode_Check(fastargs[0])) {
+ _PyArg_BadArgument("tokenizeriter", "argument 'source'", "str", fastargs[0]);
+ goto exit;
+ }
+ Py_ssize_t source_length;
+ source = PyUnicode_AsUTF8AndSize(fastargs[0], &source_length);
+ if (source == NULL) {
+ goto exit;
+ }
+ if (strlen(source) != (size_t)source_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
+ return_value = tokenizeriter_new_impl(type, source);
+
+exit:
+ return return_value;
+}
+/*[clinic end generated code: output=dfcd64774e01bfe6 input=a9049054013a1b77]*/