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     if (!PyArg_Parse(arg, "i:ascii_iscased", &character)) {
51         goto exit;
52     }
53     _return_value = _sre_ascii_iscased_impl(module, character);
54     if ((_return_value == -1) && PyErr_Occurred()) {
55         goto exit;
56     }
57     return_value = PyBool_FromLong((long)_return_value);
58 
59 exit:
60     return return_value;
61 }
62 
63 PyDoc_STRVAR(_sre_unicode_iscased__doc__,
64 "unicode_iscased($module, character, /)\n"
65 "--\n"
66 "\n");
67 
68 #define _SRE_UNICODE_ISCASED_METHODDEF    \
69     {"unicode_iscased", (PyCFunction)_sre_unicode_iscased, METH_O, _sre_unicode_iscased__doc__},
70 
71 static int
72 _sre_unicode_iscased_impl(PyObject *module, int character);
73 
74 static PyObject *
_sre_unicode_iscased(PyObject * module,PyObject * arg)75 _sre_unicode_iscased(PyObject *module, PyObject *arg)
76 {
77     PyObject *return_value = NULL;
78     int character;
79     int _return_value;
80 
81     if (!PyArg_Parse(arg, "i:unicode_iscased", &character)) {
82         goto exit;
83     }
84     _return_value = _sre_unicode_iscased_impl(module, character);
85     if ((_return_value == -1) && PyErr_Occurred()) {
86         goto exit;
87     }
88     return_value = PyBool_FromLong((long)_return_value);
89 
90 exit:
91     return return_value;
92 }
93 
94 PyDoc_STRVAR(_sre_ascii_tolower__doc__,
95 "ascii_tolower($module, character, /)\n"
96 "--\n"
97 "\n");
98 
99 #define _SRE_ASCII_TOLOWER_METHODDEF    \
100     {"ascii_tolower", (PyCFunction)_sre_ascii_tolower, METH_O, _sre_ascii_tolower__doc__},
101 
102 static int
103 _sre_ascii_tolower_impl(PyObject *module, int character);
104 
105 static PyObject *
_sre_ascii_tolower(PyObject * module,PyObject * arg)106 _sre_ascii_tolower(PyObject *module, PyObject *arg)
107 {
108     PyObject *return_value = NULL;
109     int character;
110     int _return_value;
111 
112     if (!PyArg_Parse(arg, "i:ascii_tolower", &character)) {
113         goto exit;
114     }
115     _return_value = _sre_ascii_tolower_impl(module, character);
116     if ((_return_value == -1) && PyErr_Occurred()) {
117         goto exit;
118     }
119     return_value = PyLong_FromLong((long)_return_value);
120 
121 exit:
122     return return_value;
123 }
124 
125 PyDoc_STRVAR(_sre_unicode_tolower__doc__,
126 "unicode_tolower($module, character, /)\n"
127 "--\n"
128 "\n");
129 
130 #define _SRE_UNICODE_TOLOWER_METHODDEF    \
131     {"unicode_tolower", (PyCFunction)_sre_unicode_tolower, METH_O, _sre_unicode_tolower__doc__},
132 
133 static int
134 _sre_unicode_tolower_impl(PyObject *module, int character);
135 
136 static PyObject *
_sre_unicode_tolower(PyObject * module,PyObject * arg)137 _sre_unicode_tolower(PyObject *module, PyObject *arg)
138 {
139     PyObject *return_value = NULL;
140     int character;
141     int _return_value;
142 
143     if (!PyArg_Parse(arg, "i:unicode_tolower", &character)) {
144         goto exit;
145     }
146     _return_value = _sre_unicode_tolower_impl(module, character);
147     if ((_return_value == -1) && PyErr_Occurred()) {
148         goto exit;
149     }
150     return_value = PyLong_FromLong((long)_return_value);
151 
152 exit:
153     return return_value;
154 }
155 
156 PyDoc_STRVAR(_sre_SRE_Pattern_match__doc__,
157 "match($self, /, string, pos=0, endpos=sys.maxsize)\n"
158 "--\n"
159 "\n"
160 "Matches zero or more characters at the beginning of the string.");
161 
162 #define _SRE_SRE_PATTERN_MATCH_METHODDEF    \
163     {"match", (PyCFunction)_sre_SRE_Pattern_match, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_match__doc__},
164 
165 static PyObject *
166 _sre_SRE_Pattern_match_impl(PatternObject *self, PyObject *string,
167                             Py_ssize_t pos, Py_ssize_t endpos);
168 
169 static PyObject *
_sre_SRE_Pattern_match(PatternObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)170 _sre_SRE_Pattern_match(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
171 {
172     PyObject *return_value = NULL;
173     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
174     static _PyArg_Parser _parser = {"O|nn:match", _keywords, 0};
175     PyObject *string;
176     Py_ssize_t pos = 0;
177     Py_ssize_t endpos = PY_SSIZE_T_MAX;
178 
179     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
180         &string, &pos, &endpos)) {
181         goto exit;
182     }
183     return_value = _sre_SRE_Pattern_match_impl(self, string, pos, endpos);
184 
185 exit:
186     return return_value;
187 }
188 
189 PyDoc_STRVAR(_sre_SRE_Pattern_fullmatch__doc__,
190 "fullmatch($self, /, string, pos=0, endpos=sys.maxsize)\n"
191 "--\n"
192 "\n"
193 "Matches against all of the string.");
194 
195 #define _SRE_SRE_PATTERN_FULLMATCH_METHODDEF    \
196     {"fullmatch", (PyCFunction)_sre_SRE_Pattern_fullmatch, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_fullmatch__doc__},
197 
198 static PyObject *
199 _sre_SRE_Pattern_fullmatch_impl(PatternObject *self, PyObject *string,
200                                 Py_ssize_t pos, Py_ssize_t endpos);
201 
202 static PyObject *
_sre_SRE_Pattern_fullmatch(PatternObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)203 _sre_SRE_Pattern_fullmatch(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
204 {
205     PyObject *return_value = NULL;
206     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
207     static _PyArg_Parser _parser = {"O|nn:fullmatch", _keywords, 0};
208     PyObject *string;
209     Py_ssize_t pos = 0;
210     Py_ssize_t endpos = PY_SSIZE_T_MAX;
211 
212     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
213         &string, &pos, &endpos)) {
214         goto exit;
215     }
216     return_value = _sre_SRE_Pattern_fullmatch_impl(self, string, pos, endpos);
217 
218 exit:
219     return return_value;
220 }
221 
222 PyDoc_STRVAR(_sre_SRE_Pattern_search__doc__,
223 "search($self, /, string, pos=0, endpos=sys.maxsize)\n"
224 "--\n"
225 "\n"
226 "Scan through string looking for a match, and return a corresponding match object instance.\n"
227 "\n"
228 "Return None if no position in the string matches.");
229 
230 #define _SRE_SRE_PATTERN_SEARCH_METHODDEF    \
231     {"search", (PyCFunction)_sre_SRE_Pattern_search, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_search__doc__},
232 
233 static PyObject *
234 _sre_SRE_Pattern_search_impl(PatternObject *self, PyObject *string,
235                              Py_ssize_t pos, Py_ssize_t endpos);
236 
237 static PyObject *
_sre_SRE_Pattern_search(PatternObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)238 _sre_SRE_Pattern_search(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
239 {
240     PyObject *return_value = NULL;
241     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
242     static _PyArg_Parser _parser = {"O|nn:search", _keywords, 0};
243     PyObject *string;
244     Py_ssize_t pos = 0;
245     Py_ssize_t endpos = PY_SSIZE_T_MAX;
246 
247     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
248         &string, &pos, &endpos)) {
249         goto exit;
250     }
251     return_value = _sre_SRE_Pattern_search_impl(self, string, pos, endpos);
252 
253 exit:
254     return return_value;
255 }
256 
257 PyDoc_STRVAR(_sre_SRE_Pattern_findall__doc__,
258 "findall($self, /, string, pos=0, endpos=sys.maxsize)\n"
259 "--\n"
260 "\n"
261 "Return a list of all non-overlapping matches of pattern in string.");
262 
263 #define _SRE_SRE_PATTERN_FINDALL_METHODDEF    \
264     {"findall", (PyCFunction)_sre_SRE_Pattern_findall, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_findall__doc__},
265 
266 static PyObject *
267 _sre_SRE_Pattern_findall_impl(PatternObject *self, PyObject *string,
268                               Py_ssize_t pos, Py_ssize_t endpos);
269 
270 static PyObject *
_sre_SRE_Pattern_findall(PatternObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)271 _sre_SRE_Pattern_findall(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
272 {
273     PyObject *return_value = NULL;
274     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
275     static _PyArg_Parser _parser = {"O|nn:findall", _keywords, 0};
276     PyObject *string;
277     Py_ssize_t pos = 0;
278     Py_ssize_t endpos = PY_SSIZE_T_MAX;
279 
280     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
281         &string, &pos, &endpos)) {
282         goto exit;
283     }
284     return_value = _sre_SRE_Pattern_findall_impl(self, string, pos, endpos);
285 
286 exit:
287     return return_value;
288 }
289 
290 PyDoc_STRVAR(_sre_SRE_Pattern_finditer__doc__,
291 "finditer($self, /, string, pos=0, endpos=sys.maxsize)\n"
292 "--\n"
293 "\n"
294 "Return an iterator over all non-overlapping matches for the RE pattern in string.\n"
295 "\n"
296 "For each match, the iterator returns a match object.");
297 
298 #define _SRE_SRE_PATTERN_FINDITER_METHODDEF    \
299     {"finditer", (PyCFunction)_sre_SRE_Pattern_finditer, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_finditer__doc__},
300 
301 static PyObject *
302 _sre_SRE_Pattern_finditer_impl(PatternObject *self, PyObject *string,
303                                Py_ssize_t pos, Py_ssize_t endpos);
304 
305 static PyObject *
_sre_SRE_Pattern_finditer(PatternObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)306 _sre_SRE_Pattern_finditer(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
307 {
308     PyObject *return_value = NULL;
309     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
310     static _PyArg_Parser _parser = {"O|nn:finditer", _keywords, 0};
311     PyObject *string;
312     Py_ssize_t pos = 0;
313     Py_ssize_t endpos = PY_SSIZE_T_MAX;
314 
315     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
316         &string, &pos, &endpos)) {
317         goto exit;
318     }
319     return_value = _sre_SRE_Pattern_finditer_impl(self, string, pos, endpos);
320 
321 exit:
322     return return_value;
323 }
324 
325 PyDoc_STRVAR(_sre_SRE_Pattern_scanner__doc__,
326 "scanner($self, /, string, pos=0, endpos=sys.maxsize)\n"
327 "--\n"
328 "\n");
329 
330 #define _SRE_SRE_PATTERN_SCANNER_METHODDEF    \
331     {"scanner", (PyCFunction)_sre_SRE_Pattern_scanner, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_scanner__doc__},
332 
333 static PyObject *
334 _sre_SRE_Pattern_scanner_impl(PatternObject *self, PyObject *string,
335                               Py_ssize_t pos, Py_ssize_t endpos);
336 
337 static PyObject *
_sre_SRE_Pattern_scanner(PatternObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)338 _sre_SRE_Pattern_scanner(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
339 {
340     PyObject *return_value = NULL;
341     static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
342     static _PyArg_Parser _parser = {"O|nn:scanner", _keywords, 0};
343     PyObject *string;
344     Py_ssize_t pos = 0;
345     Py_ssize_t endpos = PY_SSIZE_T_MAX;
346 
347     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
348         &string, &pos, &endpos)) {
349         goto exit;
350     }
351     return_value = _sre_SRE_Pattern_scanner_impl(self, string, pos, endpos);
352 
353 exit:
354     return return_value;
355 }
356 
357 PyDoc_STRVAR(_sre_SRE_Pattern_split__doc__,
358 "split($self, /, string, maxsplit=0)\n"
359 "--\n"
360 "\n"
361 "Split string by the occurrences of pattern.");
362 
363 #define _SRE_SRE_PATTERN_SPLIT_METHODDEF    \
364     {"split", (PyCFunction)_sre_SRE_Pattern_split, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_split__doc__},
365 
366 static PyObject *
367 _sre_SRE_Pattern_split_impl(PatternObject *self, PyObject *string,
368                             Py_ssize_t maxsplit);
369 
370 static PyObject *
_sre_SRE_Pattern_split(PatternObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)371 _sre_SRE_Pattern_split(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
372 {
373     PyObject *return_value = NULL;
374     static const char * const _keywords[] = {"string", "maxsplit", NULL};
375     static _PyArg_Parser _parser = {"O|n:split", _keywords, 0};
376     PyObject *string;
377     Py_ssize_t maxsplit = 0;
378 
379     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
380         &string, &maxsplit)) {
381         goto exit;
382     }
383     return_value = _sre_SRE_Pattern_split_impl(self, string, maxsplit);
384 
385 exit:
386     return return_value;
387 }
388 
389 PyDoc_STRVAR(_sre_SRE_Pattern_sub__doc__,
390 "sub($self, /, repl, string, count=0)\n"
391 "--\n"
392 "\n"
393 "Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.");
394 
395 #define _SRE_SRE_PATTERN_SUB_METHODDEF    \
396     {"sub", (PyCFunction)_sre_SRE_Pattern_sub, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_sub__doc__},
397 
398 static PyObject *
399 _sre_SRE_Pattern_sub_impl(PatternObject *self, PyObject *repl,
400                           PyObject *string, Py_ssize_t count);
401 
402 static PyObject *
_sre_SRE_Pattern_sub(PatternObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)403 _sre_SRE_Pattern_sub(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
404 {
405     PyObject *return_value = NULL;
406     static const char * const _keywords[] = {"repl", "string", "count", NULL};
407     static _PyArg_Parser _parser = {"OO|n:sub", _keywords, 0};
408     PyObject *repl;
409     PyObject *string;
410     Py_ssize_t count = 0;
411 
412     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
413         &repl, &string, &count)) {
414         goto exit;
415     }
416     return_value = _sre_SRE_Pattern_sub_impl(self, repl, string, count);
417 
418 exit:
419     return return_value;
420 }
421 
422 PyDoc_STRVAR(_sre_SRE_Pattern_subn__doc__,
423 "subn($self, /, repl, string, count=0)\n"
424 "--\n"
425 "\n"
426 "Return the tuple (new_string, number_of_subs_made) found by replacing the leftmost non-overlapping occurrences of pattern with the replacement repl.");
427 
428 #define _SRE_SRE_PATTERN_SUBN_METHODDEF    \
429     {"subn", (PyCFunction)_sre_SRE_Pattern_subn, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_subn__doc__},
430 
431 static PyObject *
432 _sre_SRE_Pattern_subn_impl(PatternObject *self, PyObject *repl,
433                            PyObject *string, Py_ssize_t count);
434 
435 static PyObject *
_sre_SRE_Pattern_subn(PatternObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)436 _sre_SRE_Pattern_subn(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
437 {
438     PyObject *return_value = NULL;
439     static const char * const _keywords[] = {"repl", "string", "count", NULL};
440     static _PyArg_Parser _parser = {"OO|n:subn", _keywords, 0};
441     PyObject *repl;
442     PyObject *string;
443     Py_ssize_t count = 0;
444 
445     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
446         &repl, &string, &count)) {
447         goto exit;
448     }
449     return_value = _sre_SRE_Pattern_subn_impl(self, repl, string, count);
450 
451 exit:
452     return return_value;
453 }
454 
455 PyDoc_STRVAR(_sre_SRE_Pattern___copy____doc__,
456 "__copy__($self, /)\n"
457 "--\n"
458 "\n");
459 
460 #define _SRE_SRE_PATTERN___COPY___METHODDEF    \
461     {"__copy__", (PyCFunction)_sre_SRE_Pattern___copy__, METH_NOARGS, _sre_SRE_Pattern___copy____doc__},
462 
463 static PyObject *
464 _sre_SRE_Pattern___copy___impl(PatternObject *self);
465 
466 static PyObject *
_sre_SRE_Pattern___copy__(PatternObject * self,PyObject * Py_UNUSED (ignored))467 _sre_SRE_Pattern___copy__(PatternObject *self, PyObject *Py_UNUSED(ignored))
468 {
469     return _sre_SRE_Pattern___copy___impl(self);
470 }
471 
472 PyDoc_STRVAR(_sre_SRE_Pattern___deepcopy____doc__,
473 "__deepcopy__($self, memo, /)\n"
474 "--\n"
475 "\n");
476 
477 #define _SRE_SRE_PATTERN___DEEPCOPY___METHODDEF    \
478     {"__deepcopy__", (PyCFunction)_sre_SRE_Pattern___deepcopy__, METH_O, _sre_SRE_Pattern___deepcopy____doc__},
479 
480 PyDoc_STRVAR(_sre_compile__doc__,
481 "compile($module, /, pattern, flags, code, groups, groupindex,\n"
482 "        indexgroup)\n"
483 "--\n"
484 "\n");
485 
486 #define _SRE_COMPILE_METHODDEF    \
487     {"compile", (PyCFunction)_sre_compile, METH_FASTCALL|METH_KEYWORDS, _sre_compile__doc__},
488 
489 static PyObject *
490 _sre_compile_impl(PyObject *module, PyObject *pattern, int flags,
491                   PyObject *code, Py_ssize_t groups, PyObject *groupindex,
492                   PyObject *indexgroup);
493 
494 static PyObject *
_sre_compile(PyObject * module,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)495 _sre_compile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
496 {
497     PyObject *return_value = NULL;
498     static const char * const _keywords[] = {"pattern", "flags", "code", "groups", "groupindex", "indexgroup", NULL};
499     static _PyArg_Parser _parser = {"OiO!nO!O!:compile", _keywords, 0};
500     PyObject *pattern;
501     int flags;
502     PyObject *code;
503     Py_ssize_t groups;
504     PyObject *groupindex;
505     PyObject *indexgroup;
506 
507     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
508         &pattern, &flags, &PyList_Type, &code, &groups, &PyDict_Type, &groupindex, &PyTuple_Type, &indexgroup)) {
509         goto exit;
510     }
511     return_value = _sre_compile_impl(module, pattern, flags, code, groups, groupindex, indexgroup);
512 
513 exit:
514     return return_value;
515 }
516 
517 PyDoc_STRVAR(_sre_SRE_Match_expand__doc__,
518 "expand($self, /, template)\n"
519 "--\n"
520 "\n"
521 "Return the string obtained by doing backslash substitution on the string template, as done by the sub() method.");
522 
523 #define _SRE_SRE_MATCH_EXPAND_METHODDEF    \
524     {"expand", (PyCFunction)_sre_SRE_Match_expand, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_expand__doc__},
525 
526 static PyObject *
527 _sre_SRE_Match_expand_impl(MatchObject *self, PyObject *template);
528 
529 static PyObject *
_sre_SRE_Match_expand(MatchObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)530 _sre_SRE_Match_expand(MatchObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
531 {
532     PyObject *return_value = NULL;
533     static const char * const _keywords[] = {"template", NULL};
534     static _PyArg_Parser _parser = {"O:expand", _keywords, 0};
535     PyObject *template;
536 
537     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
538         &template)) {
539         goto exit;
540     }
541     return_value = _sre_SRE_Match_expand_impl(self, template);
542 
543 exit:
544     return return_value;
545 }
546 
547 PyDoc_STRVAR(_sre_SRE_Match_groups__doc__,
548 "groups($self, /, default=None)\n"
549 "--\n"
550 "\n"
551 "Return a tuple containing all the subgroups of the match, from 1.\n"
552 "\n"
553 "  default\n"
554 "    Is used for groups that did not participate in the match.");
555 
556 #define _SRE_SRE_MATCH_GROUPS_METHODDEF    \
557     {"groups", (PyCFunction)_sre_SRE_Match_groups, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_groups__doc__},
558 
559 static PyObject *
560 _sre_SRE_Match_groups_impl(MatchObject *self, PyObject *default_value);
561 
562 static PyObject *
_sre_SRE_Match_groups(MatchObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)563 _sre_SRE_Match_groups(MatchObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
564 {
565     PyObject *return_value = NULL;
566     static const char * const _keywords[] = {"default", NULL};
567     static _PyArg_Parser _parser = {"|O:groups", _keywords, 0};
568     PyObject *default_value = Py_None;
569 
570     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
571         &default_value)) {
572         goto exit;
573     }
574     return_value = _sre_SRE_Match_groups_impl(self, default_value);
575 
576 exit:
577     return return_value;
578 }
579 
580 PyDoc_STRVAR(_sre_SRE_Match_groupdict__doc__,
581 "groupdict($self, /, default=None)\n"
582 "--\n"
583 "\n"
584 "Return a dictionary containing all the named subgroups of the match, keyed by the subgroup name.\n"
585 "\n"
586 "  default\n"
587 "    Is used for groups that did not participate in the match.");
588 
589 #define _SRE_SRE_MATCH_GROUPDICT_METHODDEF    \
590     {"groupdict", (PyCFunction)_sre_SRE_Match_groupdict, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_groupdict__doc__},
591 
592 static PyObject *
593 _sre_SRE_Match_groupdict_impl(MatchObject *self, PyObject *default_value);
594 
595 static PyObject *
_sre_SRE_Match_groupdict(MatchObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)596 _sre_SRE_Match_groupdict(MatchObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
597 {
598     PyObject *return_value = NULL;
599     static const char * const _keywords[] = {"default", NULL};
600     static _PyArg_Parser _parser = {"|O:groupdict", _keywords, 0};
601     PyObject *default_value = Py_None;
602 
603     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
604         &default_value)) {
605         goto exit;
606     }
607     return_value = _sre_SRE_Match_groupdict_impl(self, default_value);
608 
609 exit:
610     return return_value;
611 }
612 
613 PyDoc_STRVAR(_sre_SRE_Match_start__doc__,
614 "start($self, group=0, /)\n"
615 "--\n"
616 "\n"
617 "Return index of the start of the substring matched by group.");
618 
619 #define _SRE_SRE_MATCH_START_METHODDEF    \
620     {"start", (PyCFunction)_sre_SRE_Match_start, METH_FASTCALL, _sre_SRE_Match_start__doc__},
621 
622 static Py_ssize_t
623 _sre_SRE_Match_start_impl(MatchObject *self, PyObject *group);
624 
625 static PyObject *
_sre_SRE_Match_start(MatchObject * self,PyObject * const * args,Py_ssize_t nargs)626 _sre_SRE_Match_start(MatchObject *self, PyObject *const *args, Py_ssize_t nargs)
627 {
628     PyObject *return_value = NULL;
629     PyObject *group = NULL;
630     Py_ssize_t _return_value;
631 
632     if (!_PyArg_UnpackStack(args, nargs, "start",
633         0, 1,
634         &group)) {
635         goto exit;
636     }
637     _return_value = _sre_SRE_Match_start_impl(self, group);
638     if ((_return_value == -1) && PyErr_Occurred()) {
639         goto exit;
640     }
641     return_value = PyLong_FromSsize_t(_return_value);
642 
643 exit:
644     return return_value;
645 }
646 
647 PyDoc_STRVAR(_sre_SRE_Match_end__doc__,
648 "end($self, group=0, /)\n"
649 "--\n"
650 "\n"
651 "Return index of the end of the substring matched by group.");
652 
653 #define _SRE_SRE_MATCH_END_METHODDEF    \
654     {"end", (PyCFunction)_sre_SRE_Match_end, METH_FASTCALL, _sre_SRE_Match_end__doc__},
655 
656 static Py_ssize_t
657 _sre_SRE_Match_end_impl(MatchObject *self, PyObject *group);
658 
659 static PyObject *
_sre_SRE_Match_end(MatchObject * self,PyObject * const * args,Py_ssize_t nargs)660 _sre_SRE_Match_end(MatchObject *self, PyObject *const *args, Py_ssize_t nargs)
661 {
662     PyObject *return_value = NULL;
663     PyObject *group = NULL;
664     Py_ssize_t _return_value;
665 
666     if (!_PyArg_UnpackStack(args, nargs, "end",
667         0, 1,
668         &group)) {
669         goto exit;
670     }
671     _return_value = _sre_SRE_Match_end_impl(self, group);
672     if ((_return_value == -1) && PyErr_Occurred()) {
673         goto exit;
674     }
675     return_value = PyLong_FromSsize_t(_return_value);
676 
677 exit:
678     return return_value;
679 }
680 
681 PyDoc_STRVAR(_sre_SRE_Match_span__doc__,
682 "span($self, group=0, /)\n"
683 "--\n"
684 "\n"
685 "For match object m, return the 2-tuple (m.start(group), m.end(group)).");
686 
687 #define _SRE_SRE_MATCH_SPAN_METHODDEF    \
688     {"span", (PyCFunction)_sre_SRE_Match_span, METH_FASTCALL, _sre_SRE_Match_span__doc__},
689 
690 static PyObject *
691 _sre_SRE_Match_span_impl(MatchObject *self, PyObject *group);
692 
693 static PyObject *
_sre_SRE_Match_span(MatchObject * self,PyObject * const * args,Py_ssize_t nargs)694 _sre_SRE_Match_span(MatchObject *self, PyObject *const *args, Py_ssize_t nargs)
695 {
696     PyObject *return_value = NULL;
697     PyObject *group = NULL;
698 
699     if (!_PyArg_UnpackStack(args, nargs, "span",
700         0, 1,
701         &group)) {
702         goto exit;
703     }
704     return_value = _sre_SRE_Match_span_impl(self, group);
705 
706 exit:
707     return return_value;
708 }
709 
710 PyDoc_STRVAR(_sre_SRE_Match___copy____doc__,
711 "__copy__($self, /)\n"
712 "--\n"
713 "\n");
714 
715 #define _SRE_SRE_MATCH___COPY___METHODDEF    \
716     {"__copy__", (PyCFunction)_sre_SRE_Match___copy__, METH_NOARGS, _sre_SRE_Match___copy____doc__},
717 
718 static PyObject *
719 _sre_SRE_Match___copy___impl(MatchObject *self);
720 
721 static PyObject *
_sre_SRE_Match___copy__(MatchObject * self,PyObject * Py_UNUSED (ignored))722 _sre_SRE_Match___copy__(MatchObject *self, PyObject *Py_UNUSED(ignored))
723 {
724     return _sre_SRE_Match___copy___impl(self);
725 }
726 
727 PyDoc_STRVAR(_sre_SRE_Match___deepcopy____doc__,
728 "__deepcopy__($self, memo, /)\n"
729 "--\n"
730 "\n");
731 
732 #define _SRE_SRE_MATCH___DEEPCOPY___METHODDEF    \
733     {"__deepcopy__", (PyCFunction)_sre_SRE_Match___deepcopy__, METH_O, _sre_SRE_Match___deepcopy____doc__},
734 
735 PyDoc_STRVAR(_sre_SRE_Scanner_match__doc__,
736 "match($self, /)\n"
737 "--\n"
738 "\n");
739 
740 #define _SRE_SRE_SCANNER_MATCH_METHODDEF    \
741     {"match", (PyCFunction)_sre_SRE_Scanner_match, METH_NOARGS, _sre_SRE_Scanner_match__doc__},
742 
743 static PyObject *
744 _sre_SRE_Scanner_match_impl(ScannerObject *self);
745 
746 static PyObject *
_sre_SRE_Scanner_match(ScannerObject * self,PyObject * Py_UNUSED (ignored))747 _sre_SRE_Scanner_match(ScannerObject *self, PyObject *Py_UNUSED(ignored))
748 {
749     return _sre_SRE_Scanner_match_impl(self);
750 }
751 
752 PyDoc_STRVAR(_sre_SRE_Scanner_search__doc__,
753 "search($self, /)\n"
754 "--\n"
755 "\n");
756 
757 #define _SRE_SRE_SCANNER_SEARCH_METHODDEF    \
758     {"search", (PyCFunction)_sre_SRE_Scanner_search, METH_NOARGS, _sre_SRE_Scanner_search__doc__},
759 
760 static PyObject *
761 _sre_SRE_Scanner_search_impl(ScannerObject *self);
762 
763 static PyObject *
_sre_SRE_Scanner_search(ScannerObject * self,PyObject * Py_UNUSED (ignored))764 _sre_SRE_Scanner_search(ScannerObject *self, PyObject *Py_UNUSED(ignored))
765 {
766     return _sre_SRE_Scanner_search_impl(self);
767 }
768 /*[clinic end generated code: output=4b807104b65c1e0e input=a9049054013a1b77]*/
769