1/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5PyDoc_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
13static int
14_sre_getcodesize_impl(PyObject *module);
15
16static PyObject *
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
28exit:
29 return return_value;
30}
31
32PyDoc_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
40static int
41_sre_ascii_iscased_impl(PyObject *module, int character);
42
43static PyObject *
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
60exit:
61 return return_value;
62}
63
64PyDoc_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
72static int
73_sre_unicode_iscased_impl(PyObject *module, int character);
74
75static PyObject *
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
92exit:
93 return return_value;
94}
95
96PyDoc_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
104static int
105_sre_ascii_tolower_impl(PyObject *module, int character);
106
107static PyObject *
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
124exit:
125 return return_value;
126}
127
128PyDoc_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
136static int
137_sre_unicode_tolower_impl(PyObject *module, int character);
138
139static PyObject *
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
156exit:
157 return return_value;
158}
159
160PyDoc_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)(void(*)(void))_sre_SRE_Pattern_match, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_match__doc__},
168
169static PyObject *
170_sre_SRE_Pattern_match_impl(PatternObject *self, PyTypeObject *cls,
171 PyObject *string, Py_ssize_t pos,
172 Py_ssize_t endpos);
173
174static PyObject *
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 }
223skip_optional_pos:
224 return_value = _sre_SRE_Pattern_match_impl(self, cls, string, pos, endpos);
225
226exit:
227 return return_value;
228}
229
230PyDoc_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)(void(*)(void))_sre_SRE_Pattern_fullmatch, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_fullmatch__doc__},
238
239static PyObject *
240_sre_SRE_Pattern_fullmatch_impl(PatternObject *self, PyTypeObject *cls,
241 PyObject *string, Py_ssize_t pos,
242 Py_ssize_t endpos);
243
244static PyObject *
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 }
293skip_optional_pos:
294 return_value = _sre_SRE_Pattern_fullmatch_impl(self, cls, string, pos, endpos);
295
296exit:
297 return return_value;
298}
299
300PyDoc_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)(void(*)(void))_sre_SRE_Pattern_search, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_search__doc__},
310
311static PyObject *
312_sre_SRE_Pattern_search_impl(PatternObject *self, PyTypeObject *cls,
313 PyObject *string, Py_ssize_t pos,
314 Py_ssize_t endpos);
315
316static PyObject *
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 }
365skip_optional_pos:
366 return_value = _sre_SRE_Pattern_search_impl(self, cls, string, pos, endpos);
367
368exit:
369 return return_value;
370}
371
372PyDoc_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)(void(*)(void))_sre_SRE_Pattern_findall, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_findall__doc__},
380
381static PyObject *
382_sre_SRE_Pattern_findall_impl(PatternObject *self, PyObject *string,
383 Py_ssize_t pos, Py_ssize_t endpos);
384
385static PyObject *
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 }
434skip_optional_pos:
435 return_value = _sre_SRE_Pattern_findall_impl(self, string, pos, endpos);
436
437exit:
438 return return_value;
439}
440
441PyDoc_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)(void(*)(void))_sre_SRE_Pattern_finditer, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_finditer__doc__},
451
452static PyObject *
453_sre_SRE_Pattern_finditer_impl(PatternObject *self, PyTypeObject *cls,
454 PyObject *string, Py_ssize_t pos,
455 Py_ssize_t endpos);
456
457static PyObject *
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 }
506skip_optional_pos:
507 return_value = _sre_SRE_Pattern_finditer_impl(self, cls, string, pos, endpos);
508
509exit:
510 return return_value;
511}
512
513PyDoc_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)(void(*)(void))_sre_SRE_Pattern_scanner, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_scanner__doc__},
520
521static PyObject *
522_sre_SRE_Pattern_scanner_impl(PatternObject *self, PyTypeObject *cls,
523 PyObject *string, Py_ssize_t pos,
524 Py_ssize_t endpos);
525
526static PyObject *
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 }
575skip_optional_pos:
576 return_value = _sre_SRE_Pattern_scanner_impl(self, cls, string, pos, endpos);
577
578exit:
579 return return_value;
580}
581
582PyDoc_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)(void(*)(void))_sre_SRE_Pattern_split, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_split__doc__},
590
591static PyObject *
592_sre_SRE_Pattern_split_impl(PatternObject *self, PyObject *string,
593 Py_ssize_t maxsplit);
594
595static PyObject *
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 }
626skip_optional_pos:
627 return_value = _sre_SRE_Pattern_split_impl(self, string, maxsplit);
628
629exit:
630 return return_value;
631}
632
633PyDoc_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)(void(*)(void))_sre_SRE_Pattern_sub, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_sub__doc__},
641
642static PyObject *
643_sre_SRE_Pattern_sub_impl(PatternObject *self, PyTypeObject *cls,
644 PyObject *repl, PyObject *string, Py_ssize_t count);
645
646static PyObject *
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 }
679skip_optional_pos:
680 return_value = _sre_SRE_Pattern_sub_impl(self, cls, repl, string, count);
681
682exit:
683 return return_value;
684}
685
686PyDoc_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)(void(*)(void))_sre_SRE_Pattern_subn, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_subn__doc__},
694
695static PyObject *
696_sre_SRE_Pattern_subn_impl(PatternObject *self, PyTypeObject *cls,
697 PyObject *repl, PyObject *string,
698 Py_ssize_t count);
699
700static PyObject *
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 }
733skip_optional_pos:
734 return_value = _sre_SRE_Pattern_subn_impl(self, cls, repl, string, count);
735
736exit:
737 return return_value;
738}
739
740PyDoc_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
748static PyObject *
749_sre_SRE_Pattern___copy___impl(PatternObject *self);
750
751static PyObject *
752_sre_SRE_Pattern___copy__(PatternObject *self, PyObject *Py_UNUSED(ignored))
753{
754 return _sre_SRE_Pattern___copy___impl(self);
755}
756
757PyDoc_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
765PyDoc_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)(void(*)(void))_sre_compile, METH_FASTCALL|METH_KEYWORDS, _sre_compile__doc__},
773
774static PyObject *
775_sre_compile_impl(PyObject *module, PyObject *pattern, int flags,
776 PyObject *code, Py_ssize_t groups, PyObject *groupindex,
777 PyObject *indexgroup);
778
779static PyObject *
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
831exit:
832 return return_value;
833}
834
835PyDoc_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)(void(*)(void))_sre_SRE_Match_expand, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_expand__doc__},
843
844static PyObject *
845_sre_SRE_Match_expand_impl(MatchObject *self, PyObject *template);
846
847static PyObject *
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
863exit:
864 return return_value;
865}
866
867PyDoc_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)(void(*)(void))_sre_SRE_Match_groups, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_groups__doc__},
878
879static PyObject *
880_sre_SRE_Match_groups_impl(MatchObject *self, PyObject *default_value);
881
882static PyObject *
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];
900skip_optional_pos:
901 return_value = _sre_SRE_Match_groups_impl(self, default_value);
902
903exit:
904 return return_value;
905}
906
907PyDoc_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)(void(*)(void))_sre_SRE_Match_groupdict, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_groupdict__doc__},
918
919static PyObject *
920_sre_SRE_Match_groupdict_impl(MatchObject *self, PyObject *default_value);
921
922static PyObject *
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];
940skip_optional_pos:
941 return_value = _sre_SRE_Match_groupdict_impl(self, default_value);
942
943exit:
944 return return_value;
945}
946
947PyDoc_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)(void(*)(void))_sre_SRE_Match_start, METH_FASTCALL, _sre_SRE_Match_start__doc__},
955
956static Py_ssize_t
957_sre_SRE_Match_start_impl(MatchObject *self, PyObject *group);
958
959static PyObject *
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];
973skip_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
980exit:
981 return return_value;
982}
983
984PyDoc_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)(void(*)(void))_sre_SRE_Match_end, METH_FASTCALL, _sre_SRE_Match_end__doc__},
992
993static Py_ssize_t
994_sre_SRE_Match_end_impl(MatchObject *self, PyObject *group);
995
996static PyObject *
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];
1010skip_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
1017exit:
1018 return return_value;
1019}
1020
1021PyDoc_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)(void(*)(void))_sre_SRE_Match_span, METH_FASTCALL, _sre_SRE_Match_span__doc__},
1029
1030static PyObject *
1031_sre_SRE_Match_span_impl(MatchObject *self, PyObject *group);
1032
1033static PyObject *
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];
1046skip_optional:
1047 return_value = _sre_SRE_Match_span_impl(self, group);
1048
1049exit:
1050 return return_value;
1051}
1052
1053PyDoc_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
1061static PyObject *
1062_sre_SRE_Match___copy___impl(MatchObject *self);
1063
1064static PyObject *
1065_sre_SRE_Match___copy__(MatchObject *self, PyObject *Py_UNUSED(ignored))
1066{
1067 return _sre_SRE_Match___copy___impl(self);
1068}
1069
1070PyDoc_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
1078PyDoc_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)(void(*)(void))_sre_SRE_Scanner_match, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Scanner_match__doc__},
1085
1086static PyObject *
1087_sre_SRE_Scanner_match_impl(ScannerObject *self, PyTypeObject *cls);
1088
1089static PyObject *
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
1099PyDoc_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)(void(*)(void))_sre_SRE_Scanner_search, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Scanner_search__doc__},
1106
1107static PyObject *
1108_sre_SRE_Scanner_search_impl(ScannerObject *self, PyTypeObject *cls);
1109
1110static PyObject *
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=ead5eb818b7771f8 input=a9049054013a1b77]*/
1120