1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4 
5 PyDoc_STRVAR(_sre_getcodesize__doc__,
6 "getcodesize($module, /)\n"
7 "--\n"
8 "\n");
9 
10 #define _SRE_GETCODESIZE_METHODDEF    \
11     {"getcodesize", (PyCFunction)_sre_getcodesize, METH_NOARGS, _sre_getcodesize__doc__},
12 
13 static int
14 _sre_getcodesize_impl(PyObject *module);
15 
16 static PyObject *
_sre_getcodesize(PyObject * module,PyObject * Py_UNUSED (ignored))17 _sre_getcodesize(PyObject *module, PyObject *Py_UNUSED(ignored))
18 {
19     PyObject *return_value = NULL;
20     int _return_value;
21 
22     _return_value = _sre_getcodesize_impl(module);
23     if ((_return_value == -1) && PyErr_Occurred()) {
24         goto exit;
25     }
26     return_value = PyLong_FromLong((long)_return_value);
27 
28 exit:
29     return return_value;
30 }
31 
32 PyDoc_STRVAR(_sre_ascii_iscased__doc__,
33 "ascii_iscased($module, character, /)\n"
34 "--\n"
35 "\n");
36 
37 #define _SRE_ASCII_ISCASED_METHODDEF    \
38     {"ascii_iscased", (PyCFunction)_sre_ascii_iscased, METH_O, _sre_ascii_iscased__doc__},
39 
40 static int
41 _sre_ascii_iscased_impl(PyObject *module, int character);
42 
43 static PyObject *
_sre_ascii_iscased(PyObject * module,PyObject * arg)44 _sre_ascii_iscased(PyObject *module, PyObject *arg)
45 {
46     PyObject *return_value = NULL;
47     int character;
48     int _return_value;
49 
50     character = _PyLong_AsInt(arg);
51     if (character == -1 && PyErr_Occurred()) {
52         goto exit;
53     }
54     _return_value = _sre_ascii_iscased_impl(module, character);
55     if ((_return_value == -1) && PyErr_Occurred()) {
56         goto exit;
57     }
58     return_value = PyBool_FromLong((long)_return_value);
59 
60 exit:
61     return return_value;
62 }
63 
64 PyDoc_STRVAR(_sre_unicode_iscased__doc__,
65 "unicode_iscased($module, character, /)\n"
66 "--\n"
67 "\n");
68 
69 #define _SRE_UNICODE_ISCASED_METHODDEF    \
70     {"unicode_iscased", (PyCFunction)_sre_unicode_iscased, METH_O, _sre_unicode_iscased__doc__},
71 
72 static int
73 _sre_unicode_iscased_impl(PyObject *module, int character);
74 
75 static PyObject *
_sre_unicode_iscased(PyObject * module,PyObject * arg)76 _sre_unicode_iscased(PyObject *module, PyObject *arg)
77 {
78     PyObject *return_value = NULL;
79     int character;
80     int _return_value;
81 
82     character = _PyLong_AsInt(arg);
83     if (character == -1 && PyErr_Occurred()) {
84         goto exit;
85     }
86     _return_value = _sre_unicode_iscased_impl(module, character);
87     if ((_return_value == -1) && PyErr_Occurred()) {
88         goto exit;
89     }
90     return_value = PyBool_FromLong((long)_return_value);
91 
92 exit:
93     return return_value;
94 }
95 
96 PyDoc_STRVAR(_sre_ascii_tolower__doc__,
97 "ascii_tolower($module, character, /)\n"
98 "--\n"
99 "\n");
100 
101 #define _SRE_ASCII_TOLOWER_METHODDEF    \
102     {"ascii_tolower", (PyCFunction)_sre_ascii_tolower, METH_O, _sre_ascii_tolower__doc__},
103 
104 static int
105 _sre_ascii_tolower_impl(PyObject *module, int character);
106 
107 static PyObject *
_sre_ascii_tolower(PyObject * module,PyObject * arg)108 _sre_ascii_tolower(PyObject *module, PyObject *arg)
109 {
110     PyObject *return_value = NULL;
111     int character;
112     int _return_value;
113 
114     character = _PyLong_AsInt(arg);
115     if (character == -1 && PyErr_Occurred()) {
116         goto exit;
117     }
118     _return_value = _sre_ascii_tolower_impl(module, character);
119     if ((_return_value == -1) && PyErr_Occurred()) {
120         goto exit;
121     }
122     return_value = PyLong_FromLong((long)_return_value);
123 
124 exit:
125     return return_value;
126 }
127 
128 PyDoc_STRVAR(_sre_unicode_tolower__doc__,
129 "unicode_tolower($module, character, /)\n"
130 "--\n"
131 "\n");
132 
133 #define _SRE_UNICODE_TOLOWER_METHODDEF    \
134     {"unicode_tolower", (PyCFunction)_sre_unicode_tolower, METH_O, _sre_unicode_tolower__doc__},
135 
136 static int
137 _sre_unicode_tolower_impl(PyObject *module, int character);
138 
139 static PyObject *
_sre_unicode_tolower(PyObject * module,PyObject * arg)140 _sre_unicode_tolower(PyObject *module, PyObject *arg)
141 {
142     PyObject *return_value = NULL;
143     int character;
144     int _return_value;
145 
146     character = _PyLong_AsInt(arg);
147     if (character == -1 && PyErr_Occurred()) {
148         goto exit;
149     }
150     _return_value = _sre_unicode_tolower_impl(module, character);
151     if ((_return_value == -1) && PyErr_Occurred()) {
152         goto exit;
153     }
154     return_value = PyLong_FromLong((long)_return_value);
155 
156 exit:
157     return return_value;
158 }
159 
160 PyDoc_STRVAR(_sre_SRE_Pattern_match__doc__,
161 "match($self, /, string, pos=0, endpos=sys.maxsize)\n"
162 "--\n"
163 "\n"
164 "Matches zero or more characters at the beginning of the string.");
165 
166 #define _SRE_SRE_PATTERN_MATCH_METHODDEF    \
167     {"match", _PyCFunction_CAST(_sre_SRE_Pattern_match), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_match__doc__},
168 
169 static PyObject *
170 _sre_SRE_Pattern_match_impl(PatternObject *self, PyTypeObject *cls,
171                             PyObject *string, Py_ssize_t pos,
172                             Py_ssize_t endpos);
173 
174 static PyObject *
_sre_SRE_Pattern_match(PatternObject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)175 _sre_SRE_Pattern_match(PatternObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
176 {
177     PyObject *return_value = NULL;
178     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
179     static _PyArg_Parser _parser = {NULL, _keywords, "match", 0};
180     PyObject *argsbuf[3];
181     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
182     PyObject *string;
183     Py_ssize_t pos = 0;
184     Py_ssize_t endpos = PY_SSIZE_T_MAX;
185 
186     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
187     if (!args) {
188         goto exit;
189     }
190     string = args[0];
191     if (!noptargs) {
192         goto skip_optional_pos;
193     }
194     if (args[1]) {
195         {
196             Py_ssize_t ival = -1;
197             PyObject *iobj = _PyNumber_Index(args[1]);
198             if (iobj != NULL) {
199                 ival = PyLong_AsSsize_t(iobj);
200                 Py_DECREF(iobj);
201             }
202             if (ival == -1 && PyErr_Occurred()) {
203                 goto exit;
204             }
205             pos = ival;
206         }
207         if (!--noptargs) {
208             goto skip_optional_pos;
209         }
210     }
211     {
212         Py_ssize_t ival = -1;
213         PyObject *iobj = _PyNumber_Index(args[2]);
214         if (iobj != NULL) {
215             ival = PyLong_AsSsize_t(iobj);
216             Py_DECREF(iobj);
217         }
218         if (ival == -1 && PyErr_Occurred()) {
219             goto exit;
220         }
221         endpos = ival;
222     }
223 skip_optional_pos:
224     return_value = _sre_SRE_Pattern_match_impl(self, cls, string, pos, endpos);
225 
226 exit:
227     return return_value;
228 }
229 
230 PyDoc_STRVAR(_sre_SRE_Pattern_fullmatch__doc__,
231 "fullmatch($self, /, string, pos=0, endpos=sys.maxsize)\n"
232 "--\n"
233 "\n"
234 "Matches against all of the string.");
235 
236 #define _SRE_SRE_PATTERN_FULLMATCH_METHODDEF    \
237     {"fullmatch", _PyCFunction_CAST(_sre_SRE_Pattern_fullmatch), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_fullmatch__doc__},
238 
239 static PyObject *
240 _sre_SRE_Pattern_fullmatch_impl(PatternObject *self, PyTypeObject *cls,
241                                 PyObject *string, Py_ssize_t pos,
242                                 Py_ssize_t endpos);
243 
244 static PyObject *
_sre_SRE_Pattern_fullmatch(PatternObject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)245 _sre_SRE_Pattern_fullmatch(PatternObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
246 {
247     PyObject *return_value = NULL;
248     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
249     static _PyArg_Parser _parser = {NULL, _keywords, "fullmatch", 0};
250     PyObject *argsbuf[3];
251     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
252     PyObject *string;
253     Py_ssize_t pos = 0;
254     Py_ssize_t endpos = PY_SSIZE_T_MAX;
255 
256     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
257     if (!args) {
258         goto exit;
259     }
260     string = args[0];
261     if (!noptargs) {
262         goto skip_optional_pos;
263     }
264     if (args[1]) {
265         {
266             Py_ssize_t ival = -1;
267             PyObject *iobj = _PyNumber_Index(args[1]);
268             if (iobj != NULL) {
269                 ival = PyLong_AsSsize_t(iobj);
270                 Py_DECREF(iobj);
271             }
272             if (ival == -1 && PyErr_Occurred()) {
273                 goto exit;
274             }
275             pos = ival;
276         }
277         if (!--noptargs) {
278             goto skip_optional_pos;
279         }
280     }
281     {
282         Py_ssize_t ival = -1;
283         PyObject *iobj = _PyNumber_Index(args[2]);
284         if (iobj != NULL) {
285             ival = PyLong_AsSsize_t(iobj);
286             Py_DECREF(iobj);
287         }
288         if (ival == -1 && PyErr_Occurred()) {
289             goto exit;
290         }
291         endpos = ival;
292     }
293 skip_optional_pos:
294     return_value = _sre_SRE_Pattern_fullmatch_impl(self, cls, string, pos, endpos);
295 
296 exit:
297     return return_value;
298 }
299 
300 PyDoc_STRVAR(_sre_SRE_Pattern_search__doc__,
301 "search($self, /, string, pos=0, endpos=sys.maxsize)\n"
302 "--\n"
303 "\n"
304 "Scan through string looking for a match, and return a corresponding match object instance.\n"
305 "\n"
306 "Return None if no position in the string matches.");
307 
308 #define _SRE_SRE_PATTERN_SEARCH_METHODDEF    \
309     {"search", _PyCFunction_CAST(_sre_SRE_Pattern_search), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_search__doc__},
310 
311 static PyObject *
312 _sre_SRE_Pattern_search_impl(PatternObject *self, PyTypeObject *cls,
313                              PyObject *string, Py_ssize_t pos,
314                              Py_ssize_t endpos);
315 
316 static PyObject *
_sre_SRE_Pattern_search(PatternObject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)317 _sre_SRE_Pattern_search(PatternObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
318 {
319     PyObject *return_value = NULL;
320     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
321     static _PyArg_Parser _parser = {NULL, _keywords, "search", 0};
322     PyObject *argsbuf[3];
323     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
324     PyObject *string;
325     Py_ssize_t pos = 0;
326     Py_ssize_t endpos = PY_SSIZE_T_MAX;
327 
328     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
329     if (!args) {
330         goto exit;
331     }
332     string = args[0];
333     if (!noptargs) {
334         goto skip_optional_pos;
335     }
336     if (args[1]) {
337         {
338             Py_ssize_t ival = -1;
339             PyObject *iobj = _PyNumber_Index(args[1]);
340             if (iobj != NULL) {
341                 ival = PyLong_AsSsize_t(iobj);
342                 Py_DECREF(iobj);
343             }
344             if (ival == -1 && PyErr_Occurred()) {
345                 goto exit;
346             }
347             pos = ival;
348         }
349         if (!--noptargs) {
350             goto skip_optional_pos;
351         }
352     }
353     {
354         Py_ssize_t ival = -1;
355         PyObject *iobj = _PyNumber_Index(args[2]);
356         if (iobj != NULL) {
357             ival = PyLong_AsSsize_t(iobj);
358             Py_DECREF(iobj);
359         }
360         if (ival == -1 && PyErr_Occurred()) {
361             goto exit;
362         }
363         endpos = ival;
364     }
365 skip_optional_pos:
366     return_value = _sre_SRE_Pattern_search_impl(self, cls, string, pos, endpos);
367 
368 exit:
369     return return_value;
370 }
371 
372 PyDoc_STRVAR(_sre_SRE_Pattern_findall__doc__,
373 "findall($self, /, string, pos=0, endpos=sys.maxsize)\n"
374 "--\n"
375 "\n"
376 "Return a list of all non-overlapping matches of pattern in string.");
377 
378 #define _SRE_SRE_PATTERN_FINDALL_METHODDEF    \
379     {"findall", _PyCFunction_CAST(_sre_SRE_Pattern_findall), METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_findall__doc__},
380 
381 static PyObject *
382 _sre_SRE_Pattern_findall_impl(PatternObject *self, PyObject *string,
383                               Py_ssize_t pos, Py_ssize_t endpos);
384 
385 static PyObject *
_sre_SRE_Pattern_findall(PatternObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)386 _sre_SRE_Pattern_findall(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
387 {
388     PyObject *return_value = NULL;
389     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
390     static _PyArg_Parser _parser = {NULL, _keywords, "findall", 0};
391     PyObject *argsbuf[3];
392     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
393     PyObject *string;
394     Py_ssize_t pos = 0;
395     Py_ssize_t endpos = PY_SSIZE_T_MAX;
396 
397     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
398     if (!args) {
399         goto exit;
400     }
401     string = args[0];
402     if (!noptargs) {
403         goto skip_optional_pos;
404     }
405     if (args[1]) {
406         {
407             Py_ssize_t ival = -1;
408             PyObject *iobj = _PyNumber_Index(args[1]);
409             if (iobj != NULL) {
410                 ival = PyLong_AsSsize_t(iobj);
411                 Py_DECREF(iobj);
412             }
413             if (ival == -1 && PyErr_Occurred()) {
414                 goto exit;
415             }
416             pos = ival;
417         }
418         if (!--noptargs) {
419             goto skip_optional_pos;
420         }
421     }
422     {
423         Py_ssize_t ival = -1;
424         PyObject *iobj = _PyNumber_Index(args[2]);
425         if (iobj != NULL) {
426             ival = PyLong_AsSsize_t(iobj);
427             Py_DECREF(iobj);
428         }
429         if (ival == -1 && PyErr_Occurred()) {
430             goto exit;
431         }
432         endpos = ival;
433     }
434 skip_optional_pos:
435     return_value = _sre_SRE_Pattern_findall_impl(self, string, pos, endpos);
436 
437 exit:
438     return return_value;
439 }
440 
441 PyDoc_STRVAR(_sre_SRE_Pattern_finditer__doc__,
442 "finditer($self, /, string, pos=0, endpos=sys.maxsize)\n"
443 "--\n"
444 "\n"
445 "Return an iterator over all non-overlapping matches for the RE pattern in string.\n"
446 "\n"
447 "For each match, the iterator returns a match object.");
448 
449 #define _SRE_SRE_PATTERN_FINDITER_METHODDEF    \
450     {"finditer", _PyCFunction_CAST(_sre_SRE_Pattern_finditer), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_finditer__doc__},
451 
452 static PyObject *
453 _sre_SRE_Pattern_finditer_impl(PatternObject *self, PyTypeObject *cls,
454                                PyObject *string, Py_ssize_t pos,
455                                Py_ssize_t endpos);
456 
457 static PyObject *
_sre_SRE_Pattern_finditer(PatternObject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)458 _sre_SRE_Pattern_finditer(PatternObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
459 {
460     PyObject *return_value = NULL;
461     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
462     static _PyArg_Parser _parser = {NULL, _keywords, "finditer", 0};
463     PyObject *argsbuf[3];
464     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
465     PyObject *string;
466     Py_ssize_t pos = 0;
467     Py_ssize_t endpos = PY_SSIZE_T_MAX;
468 
469     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
470     if (!args) {
471         goto exit;
472     }
473     string = args[0];
474     if (!noptargs) {
475         goto skip_optional_pos;
476     }
477     if (args[1]) {
478         {
479             Py_ssize_t ival = -1;
480             PyObject *iobj = _PyNumber_Index(args[1]);
481             if (iobj != NULL) {
482                 ival = PyLong_AsSsize_t(iobj);
483                 Py_DECREF(iobj);
484             }
485             if (ival == -1 && PyErr_Occurred()) {
486                 goto exit;
487             }
488             pos = ival;
489         }
490         if (!--noptargs) {
491             goto skip_optional_pos;
492         }
493     }
494     {
495         Py_ssize_t ival = -1;
496         PyObject *iobj = _PyNumber_Index(args[2]);
497         if (iobj != NULL) {
498             ival = PyLong_AsSsize_t(iobj);
499             Py_DECREF(iobj);
500         }
501         if (ival == -1 && PyErr_Occurred()) {
502             goto exit;
503         }
504         endpos = ival;
505     }
506 skip_optional_pos:
507     return_value = _sre_SRE_Pattern_finditer_impl(self, cls, string, pos, endpos);
508 
509 exit:
510     return return_value;
511 }
512 
513 PyDoc_STRVAR(_sre_SRE_Pattern_scanner__doc__,
514 "scanner($self, /, string, pos=0, endpos=sys.maxsize)\n"
515 "--\n"
516 "\n");
517 
518 #define _SRE_SRE_PATTERN_SCANNER_METHODDEF    \
519     {"scanner", _PyCFunction_CAST(_sre_SRE_Pattern_scanner), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_scanner__doc__},
520 
521 static PyObject *
522 _sre_SRE_Pattern_scanner_impl(PatternObject *self, PyTypeObject *cls,
523                               PyObject *string, Py_ssize_t pos,
524                               Py_ssize_t endpos);
525 
526 static PyObject *
_sre_SRE_Pattern_scanner(PatternObject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)527 _sre_SRE_Pattern_scanner(PatternObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
528 {
529     PyObject *return_value = NULL;
530     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
531     static _PyArg_Parser _parser = {NULL, _keywords, "scanner", 0};
532     PyObject *argsbuf[3];
533     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
534     PyObject *string;
535     Py_ssize_t pos = 0;
536     Py_ssize_t endpos = PY_SSIZE_T_MAX;
537 
538     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
539     if (!args) {
540         goto exit;
541     }
542     string = args[0];
543     if (!noptargs) {
544         goto skip_optional_pos;
545     }
546     if (args[1]) {
547         {
548             Py_ssize_t ival = -1;
549             PyObject *iobj = _PyNumber_Index(args[1]);
550             if (iobj != NULL) {
551                 ival = PyLong_AsSsize_t(iobj);
552                 Py_DECREF(iobj);
553             }
554             if (ival == -1 && PyErr_Occurred()) {
555                 goto exit;
556             }
557             pos = ival;
558         }
559         if (!--noptargs) {
560             goto skip_optional_pos;
561         }
562     }
563     {
564         Py_ssize_t ival = -1;
565         PyObject *iobj = _PyNumber_Index(args[2]);
566         if (iobj != NULL) {
567             ival = PyLong_AsSsize_t(iobj);
568             Py_DECREF(iobj);
569         }
570         if (ival == -1 && PyErr_Occurred()) {
571             goto exit;
572         }
573         endpos = ival;
574     }
575 skip_optional_pos:
576     return_value = _sre_SRE_Pattern_scanner_impl(self, cls, string, pos, endpos);
577 
578 exit:
579     return return_value;
580 }
581 
582 PyDoc_STRVAR(_sre_SRE_Pattern_split__doc__,
583 "split($self, /, string, maxsplit=0)\n"
584 "--\n"
585 "\n"
586 "Split string by the occurrences of pattern.");
587 
588 #define _SRE_SRE_PATTERN_SPLIT_METHODDEF    \
589     {"split", _PyCFunction_CAST(_sre_SRE_Pattern_split), METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_split__doc__},
590 
591 static PyObject *
592 _sre_SRE_Pattern_split_impl(PatternObject *self, PyObject *string,
593                             Py_ssize_t maxsplit);
594 
595 static PyObject *
_sre_SRE_Pattern_split(PatternObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)596 _sre_SRE_Pattern_split(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
597 {
598     PyObject *return_value = NULL;
599     static const char * const _keywords[] = {"string", "maxsplit", NULL};
600     static _PyArg_Parser _parser = {NULL, _keywords, "split", 0};
601     PyObject *argsbuf[2];
602     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
603     PyObject *string;
604     Py_ssize_t maxsplit = 0;
605 
606     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
607     if (!args) {
608         goto exit;
609     }
610     string = args[0];
611     if (!noptargs) {
612         goto skip_optional_pos;
613     }
614     {
615         Py_ssize_t ival = -1;
616         PyObject *iobj = _PyNumber_Index(args[1]);
617         if (iobj != NULL) {
618             ival = PyLong_AsSsize_t(iobj);
619             Py_DECREF(iobj);
620         }
621         if (ival == -1 && PyErr_Occurred()) {
622             goto exit;
623         }
624         maxsplit = ival;
625     }
626 skip_optional_pos:
627     return_value = _sre_SRE_Pattern_split_impl(self, string, maxsplit);
628 
629 exit:
630     return return_value;
631 }
632 
633 PyDoc_STRVAR(_sre_SRE_Pattern_sub__doc__,
634 "sub($self, /, repl, string, count=0)\n"
635 "--\n"
636 "\n"
637 "Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.");
638 
639 #define _SRE_SRE_PATTERN_SUB_METHODDEF    \
640     {"sub", _PyCFunction_CAST(_sre_SRE_Pattern_sub), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_sub__doc__},
641 
642 static PyObject *
643 _sre_SRE_Pattern_sub_impl(PatternObject *self, PyTypeObject *cls,
644                           PyObject *repl, PyObject *string, Py_ssize_t count);
645 
646 static PyObject *
_sre_SRE_Pattern_sub(PatternObject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)647 _sre_SRE_Pattern_sub(PatternObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
648 {
649     PyObject *return_value = NULL;
650     static const char * const _keywords[] = {"repl", "string", "count", NULL};
651     static _PyArg_Parser _parser = {NULL, _keywords, "sub", 0};
652     PyObject *argsbuf[3];
653     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
654     PyObject *repl;
655     PyObject *string;
656     Py_ssize_t count = 0;
657 
658     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 3, 0, argsbuf);
659     if (!args) {
660         goto exit;
661     }
662     repl = args[0];
663     string = args[1];
664     if (!noptargs) {
665         goto skip_optional_pos;
666     }
667     {
668         Py_ssize_t ival = -1;
669         PyObject *iobj = _PyNumber_Index(args[2]);
670         if (iobj != NULL) {
671             ival = PyLong_AsSsize_t(iobj);
672             Py_DECREF(iobj);
673         }
674         if (ival == -1 && PyErr_Occurred()) {
675             goto exit;
676         }
677         count = ival;
678     }
679 skip_optional_pos:
680     return_value = _sre_SRE_Pattern_sub_impl(self, cls, repl, string, count);
681 
682 exit:
683     return return_value;
684 }
685 
686 PyDoc_STRVAR(_sre_SRE_Pattern_subn__doc__,
687 "subn($self, /, repl, string, count=0)\n"
688 "--\n"
689 "\n"
690 "Return the tuple (new_string, number_of_subs_made) found by replacing the leftmost non-overlapping occurrences of pattern with the replacement repl.");
691 
692 #define _SRE_SRE_PATTERN_SUBN_METHODDEF    \
693     {"subn", _PyCFunction_CAST(_sre_SRE_Pattern_subn), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_subn__doc__},
694 
695 static PyObject *
696 _sre_SRE_Pattern_subn_impl(PatternObject *self, PyTypeObject *cls,
697                            PyObject *repl, PyObject *string,
698                            Py_ssize_t count);
699 
700 static PyObject *
_sre_SRE_Pattern_subn(PatternObject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)701 _sre_SRE_Pattern_subn(PatternObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
702 {
703     PyObject *return_value = NULL;
704     static const char * const _keywords[] = {"repl", "string", "count", NULL};
705     static _PyArg_Parser _parser = {NULL, _keywords, "subn", 0};
706     PyObject *argsbuf[3];
707     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
708     PyObject *repl;
709     PyObject *string;
710     Py_ssize_t count = 0;
711 
712     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 3, 0, argsbuf);
713     if (!args) {
714         goto exit;
715     }
716     repl = args[0];
717     string = args[1];
718     if (!noptargs) {
719         goto skip_optional_pos;
720     }
721     {
722         Py_ssize_t ival = -1;
723         PyObject *iobj = _PyNumber_Index(args[2]);
724         if (iobj != NULL) {
725             ival = PyLong_AsSsize_t(iobj);
726             Py_DECREF(iobj);
727         }
728         if (ival == -1 && PyErr_Occurred()) {
729             goto exit;
730         }
731         count = ival;
732     }
733 skip_optional_pos:
734     return_value = _sre_SRE_Pattern_subn_impl(self, cls, repl, string, count);
735 
736 exit:
737     return return_value;
738 }
739 
740 PyDoc_STRVAR(_sre_SRE_Pattern___copy____doc__,
741 "__copy__($self, /)\n"
742 "--\n"
743 "\n");
744 
745 #define _SRE_SRE_PATTERN___COPY___METHODDEF    \
746     {"__copy__", (PyCFunction)_sre_SRE_Pattern___copy__, METH_NOARGS, _sre_SRE_Pattern___copy____doc__},
747 
748 static PyObject *
749 _sre_SRE_Pattern___copy___impl(PatternObject *self);
750 
751 static PyObject *
_sre_SRE_Pattern___copy__(PatternObject * self,PyObject * Py_UNUSED (ignored))752 _sre_SRE_Pattern___copy__(PatternObject *self, PyObject *Py_UNUSED(ignored))
753 {
754     return _sre_SRE_Pattern___copy___impl(self);
755 }
756 
757 PyDoc_STRVAR(_sre_SRE_Pattern___deepcopy____doc__,
758 "__deepcopy__($self, memo, /)\n"
759 "--\n"
760 "\n");
761 
762 #define _SRE_SRE_PATTERN___DEEPCOPY___METHODDEF    \
763     {"__deepcopy__", (PyCFunction)_sre_SRE_Pattern___deepcopy__, METH_O, _sre_SRE_Pattern___deepcopy____doc__},
764 
765 PyDoc_STRVAR(_sre_compile__doc__,
766 "compile($module, /, pattern, flags, code, groups, groupindex,\n"
767 "        indexgroup)\n"
768 "--\n"
769 "\n");
770 
771 #define _SRE_COMPILE_METHODDEF    \
772     {"compile", _PyCFunction_CAST(_sre_compile), METH_FASTCALL|METH_KEYWORDS, _sre_compile__doc__},
773 
774 static PyObject *
775 _sre_compile_impl(PyObject *module, PyObject *pattern, int flags,
776                   PyObject *code, Py_ssize_t groups, PyObject *groupindex,
777                   PyObject *indexgroup);
778 
779 static PyObject *
_sre_compile(PyObject * module,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)780 _sre_compile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
781 {
782     PyObject *return_value = NULL;
783     static const char * const _keywords[] = {"pattern", "flags", "code", "groups", "groupindex", "indexgroup", NULL};
784     static _PyArg_Parser _parser = {NULL, _keywords, "compile", 0};
785     PyObject *argsbuf[6];
786     PyObject *pattern;
787     int flags;
788     PyObject *code;
789     Py_ssize_t groups;
790     PyObject *groupindex;
791     PyObject *indexgroup;
792 
793     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 6, 6, 0, argsbuf);
794     if (!args) {
795         goto exit;
796     }
797     pattern = args[0];
798     flags = _PyLong_AsInt(args[1]);
799     if (flags == -1 && PyErr_Occurred()) {
800         goto exit;
801     }
802     if (!PyList_Check(args[2])) {
803         _PyArg_BadArgument("compile", "argument 'code'", "list", args[2]);
804         goto exit;
805     }
806     code = args[2];
807     {
808         Py_ssize_t ival = -1;
809         PyObject *iobj = _PyNumber_Index(args[3]);
810         if (iobj != NULL) {
811             ival = PyLong_AsSsize_t(iobj);
812             Py_DECREF(iobj);
813         }
814         if (ival == -1 && PyErr_Occurred()) {
815             goto exit;
816         }
817         groups = ival;
818     }
819     if (!PyDict_Check(args[4])) {
820         _PyArg_BadArgument("compile", "argument 'groupindex'", "dict", args[4]);
821         goto exit;
822     }
823     groupindex = args[4];
824     if (!PyTuple_Check(args[5])) {
825         _PyArg_BadArgument("compile", "argument 'indexgroup'", "tuple", args[5]);
826         goto exit;
827     }
828     indexgroup = args[5];
829     return_value = _sre_compile_impl(module, pattern, flags, code, groups, groupindex, indexgroup);
830 
831 exit:
832     return return_value;
833 }
834 
835 PyDoc_STRVAR(_sre_SRE_Match_expand__doc__,
836 "expand($self, /, template)\n"
837 "--\n"
838 "\n"
839 "Return the string obtained by doing backslash substitution on the string template, as done by the sub() method.");
840 
841 #define _SRE_SRE_MATCH_EXPAND_METHODDEF    \
842     {"expand", _PyCFunction_CAST(_sre_SRE_Match_expand), METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_expand__doc__},
843 
844 static PyObject *
845 _sre_SRE_Match_expand_impl(MatchObject *self, PyObject *template);
846 
847 static PyObject *
_sre_SRE_Match_expand(MatchObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)848 _sre_SRE_Match_expand(MatchObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
849 {
850     PyObject *return_value = NULL;
851     static const char * const _keywords[] = {"template", NULL};
852     static _PyArg_Parser _parser = {NULL, _keywords, "expand", 0};
853     PyObject *argsbuf[1];
854     PyObject *template;
855 
856     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
857     if (!args) {
858         goto exit;
859     }
860     template = args[0];
861     return_value = _sre_SRE_Match_expand_impl(self, template);
862 
863 exit:
864     return return_value;
865 }
866 
867 PyDoc_STRVAR(_sre_SRE_Match_groups__doc__,
868 "groups($self, /, default=None)\n"
869 "--\n"
870 "\n"
871 "Return a tuple containing all the subgroups of the match, from 1.\n"
872 "\n"
873 "  default\n"
874 "    Is used for groups that did not participate in the match.");
875 
876 #define _SRE_SRE_MATCH_GROUPS_METHODDEF    \
877     {"groups", _PyCFunction_CAST(_sre_SRE_Match_groups), METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_groups__doc__},
878 
879 static PyObject *
880 _sre_SRE_Match_groups_impl(MatchObject *self, PyObject *default_value);
881 
882 static PyObject *
_sre_SRE_Match_groups(MatchObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)883 _sre_SRE_Match_groups(MatchObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
884 {
885     PyObject *return_value = NULL;
886     static const char * const _keywords[] = {"default", NULL};
887     static _PyArg_Parser _parser = {NULL, _keywords, "groups", 0};
888     PyObject *argsbuf[1];
889     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
890     PyObject *default_value = Py_None;
891 
892     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
893     if (!args) {
894         goto exit;
895     }
896     if (!noptargs) {
897         goto skip_optional_pos;
898     }
899     default_value = args[0];
900 skip_optional_pos:
901     return_value = _sre_SRE_Match_groups_impl(self, default_value);
902 
903 exit:
904     return return_value;
905 }
906 
907 PyDoc_STRVAR(_sre_SRE_Match_groupdict__doc__,
908 "groupdict($self, /, default=None)\n"
909 "--\n"
910 "\n"
911 "Return a dictionary containing all the named subgroups of the match, keyed by the subgroup name.\n"
912 "\n"
913 "  default\n"
914 "    Is used for groups that did not participate in the match.");
915 
916 #define _SRE_SRE_MATCH_GROUPDICT_METHODDEF    \
917     {"groupdict", _PyCFunction_CAST(_sre_SRE_Match_groupdict), METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_groupdict__doc__},
918 
919 static PyObject *
920 _sre_SRE_Match_groupdict_impl(MatchObject *self, PyObject *default_value);
921 
922 static PyObject *
_sre_SRE_Match_groupdict(MatchObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)923 _sre_SRE_Match_groupdict(MatchObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
924 {
925     PyObject *return_value = NULL;
926     static const char * const _keywords[] = {"default", NULL};
927     static _PyArg_Parser _parser = {NULL, _keywords, "groupdict", 0};
928     PyObject *argsbuf[1];
929     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
930     PyObject *default_value = Py_None;
931 
932     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
933     if (!args) {
934         goto exit;
935     }
936     if (!noptargs) {
937         goto skip_optional_pos;
938     }
939     default_value = args[0];
940 skip_optional_pos:
941     return_value = _sre_SRE_Match_groupdict_impl(self, default_value);
942 
943 exit:
944     return return_value;
945 }
946 
947 PyDoc_STRVAR(_sre_SRE_Match_start__doc__,
948 "start($self, group=0, /)\n"
949 "--\n"
950 "\n"
951 "Return index of the start of the substring matched by group.");
952 
953 #define _SRE_SRE_MATCH_START_METHODDEF    \
954     {"start", _PyCFunction_CAST(_sre_SRE_Match_start), METH_FASTCALL, _sre_SRE_Match_start__doc__},
955 
956 static Py_ssize_t
957 _sre_SRE_Match_start_impl(MatchObject *self, PyObject *group);
958 
959 static PyObject *
_sre_SRE_Match_start(MatchObject * self,PyObject * const * args,Py_ssize_t nargs)960 _sre_SRE_Match_start(MatchObject *self, PyObject *const *args, Py_ssize_t nargs)
961 {
962     PyObject *return_value = NULL;
963     PyObject *group = NULL;
964     Py_ssize_t _return_value;
965 
966     if (!_PyArg_CheckPositional("start", nargs, 0, 1)) {
967         goto exit;
968     }
969     if (nargs < 1) {
970         goto skip_optional;
971     }
972     group = args[0];
973 skip_optional:
974     _return_value = _sre_SRE_Match_start_impl(self, group);
975     if ((_return_value == -1) && PyErr_Occurred()) {
976         goto exit;
977     }
978     return_value = PyLong_FromSsize_t(_return_value);
979 
980 exit:
981     return return_value;
982 }
983 
984 PyDoc_STRVAR(_sre_SRE_Match_end__doc__,
985 "end($self, group=0, /)\n"
986 "--\n"
987 "\n"
988 "Return index of the end of the substring matched by group.");
989 
990 #define _SRE_SRE_MATCH_END_METHODDEF    \
991     {"end", _PyCFunction_CAST(_sre_SRE_Match_end), METH_FASTCALL, _sre_SRE_Match_end__doc__},
992 
993 static Py_ssize_t
994 _sre_SRE_Match_end_impl(MatchObject *self, PyObject *group);
995 
996 static PyObject *
_sre_SRE_Match_end(MatchObject * self,PyObject * const * args,Py_ssize_t nargs)997 _sre_SRE_Match_end(MatchObject *self, PyObject *const *args, Py_ssize_t nargs)
998 {
999     PyObject *return_value = NULL;
1000     PyObject *group = NULL;
1001     Py_ssize_t _return_value;
1002 
1003     if (!_PyArg_CheckPositional("end", nargs, 0, 1)) {
1004         goto exit;
1005     }
1006     if (nargs < 1) {
1007         goto skip_optional;
1008     }
1009     group = args[0];
1010 skip_optional:
1011     _return_value = _sre_SRE_Match_end_impl(self, group);
1012     if ((_return_value == -1) && PyErr_Occurred()) {
1013         goto exit;
1014     }
1015     return_value = PyLong_FromSsize_t(_return_value);
1016 
1017 exit:
1018     return return_value;
1019 }
1020 
1021 PyDoc_STRVAR(_sre_SRE_Match_span__doc__,
1022 "span($self, group=0, /)\n"
1023 "--\n"
1024 "\n"
1025 "For match object m, return the 2-tuple (m.start(group), m.end(group)).");
1026 
1027 #define _SRE_SRE_MATCH_SPAN_METHODDEF    \
1028     {"span", _PyCFunction_CAST(_sre_SRE_Match_span), METH_FASTCALL, _sre_SRE_Match_span__doc__},
1029 
1030 static PyObject *
1031 _sre_SRE_Match_span_impl(MatchObject *self, PyObject *group);
1032 
1033 static PyObject *
_sre_SRE_Match_span(MatchObject * self,PyObject * const * args,Py_ssize_t nargs)1034 _sre_SRE_Match_span(MatchObject *self, PyObject *const *args, Py_ssize_t nargs)
1035 {
1036     PyObject *return_value = NULL;
1037     PyObject *group = NULL;
1038 
1039     if (!_PyArg_CheckPositional("span", nargs, 0, 1)) {
1040         goto exit;
1041     }
1042     if (nargs < 1) {
1043         goto skip_optional;
1044     }
1045     group = args[0];
1046 skip_optional:
1047     return_value = _sre_SRE_Match_span_impl(self, group);
1048 
1049 exit:
1050     return return_value;
1051 }
1052 
1053 PyDoc_STRVAR(_sre_SRE_Match___copy____doc__,
1054 "__copy__($self, /)\n"
1055 "--\n"
1056 "\n");
1057 
1058 #define _SRE_SRE_MATCH___COPY___METHODDEF    \
1059     {"__copy__", (PyCFunction)_sre_SRE_Match___copy__, METH_NOARGS, _sre_SRE_Match___copy____doc__},
1060 
1061 static PyObject *
1062 _sre_SRE_Match___copy___impl(MatchObject *self);
1063 
1064 static PyObject *
_sre_SRE_Match___copy__(MatchObject * self,PyObject * Py_UNUSED (ignored))1065 _sre_SRE_Match___copy__(MatchObject *self, PyObject *Py_UNUSED(ignored))
1066 {
1067     return _sre_SRE_Match___copy___impl(self);
1068 }
1069 
1070 PyDoc_STRVAR(_sre_SRE_Match___deepcopy____doc__,
1071 "__deepcopy__($self, memo, /)\n"
1072 "--\n"
1073 "\n");
1074 
1075 #define _SRE_SRE_MATCH___DEEPCOPY___METHODDEF    \
1076     {"__deepcopy__", (PyCFunction)_sre_SRE_Match___deepcopy__, METH_O, _sre_SRE_Match___deepcopy____doc__},
1077 
1078 PyDoc_STRVAR(_sre_SRE_Scanner_match__doc__,
1079 "match($self, /)\n"
1080 "--\n"
1081 "\n");
1082 
1083 #define _SRE_SRE_SCANNER_MATCH_METHODDEF    \
1084     {"match", _PyCFunction_CAST(_sre_SRE_Scanner_match), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Scanner_match__doc__},
1085 
1086 static PyObject *
1087 _sre_SRE_Scanner_match_impl(ScannerObject *self, PyTypeObject *cls);
1088 
1089 static PyObject *
_sre_SRE_Scanner_match(ScannerObject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)1090 _sre_SRE_Scanner_match(ScannerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
1091 {
1092     if (nargs) {
1093         PyErr_SetString(PyExc_TypeError, "match() takes no arguments");
1094         return NULL;
1095     }
1096     return _sre_SRE_Scanner_match_impl(self, cls);
1097 }
1098 
1099 PyDoc_STRVAR(_sre_SRE_Scanner_search__doc__,
1100 "search($self, /)\n"
1101 "--\n"
1102 "\n");
1103 
1104 #define _SRE_SRE_SCANNER_SEARCH_METHODDEF    \
1105     {"search", _PyCFunction_CAST(_sre_SRE_Scanner_search), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Scanner_search__doc__},
1106 
1107 static PyObject *
1108 _sre_SRE_Scanner_search_impl(ScannerObject *self, PyTypeObject *cls);
1109 
1110 static PyObject *
_sre_SRE_Scanner_search(ScannerObject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)1111 _sre_SRE_Scanner_search(ScannerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
1112 {
1113     if (nargs) {
1114         PyErr_SetString(PyExc_TypeError, "search() takes no arguments");
1115         return NULL;
1116     }
1117     return _sre_SRE_Scanner_search_impl(self, cls);
1118 }
1119 /*[clinic end generated code: output=fd2f45c941620e6e input=a9049054013a1b77]*/
1120