blob: 8056eda3b73d2f322cdf1967bf4c8eb270c2479b [file] [log] [blame]
Serhiy Storchakaa860aea2015-05-03 15:54:23 +03001/*[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
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030014_sre_getcodesize_impl(PyObject *module);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030015
16static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030017_sre_getcodesize(PyObject *module, PyObject *Py_UNUSED(ignored))
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030018{
19 PyObject *return_value = NULL;
20 int _return_value;
21
22 _return_value = _sre_getcodesize_impl(module);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030023 if ((_return_value == -1) && PyErr_Occurred()) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030024 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030025 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030026 return_value = PyLong_FromLong((long)_return_value);
27
28exit:
29 return return_value;
30}
31
Serhiy Storchaka7186cc22017-05-05 10:42:46 +030032PyDoc_STRVAR(_sre_ascii_tolower__doc__,
33"ascii_tolower($module, character, /)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030034"--\n"
35"\n");
36
Serhiy Storchaka7186cc22017-05-05 10:42:46 +030037#define _SRE_ASCII_TOLOWER_METHODDEF \
38 {"ascii_tolower", (PyCFunction)_sre_ascii_tolower, METH_O, _sre_ascii_tolower__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030039
40static int
Serhiy Storchaka7186cc22017-05-05 10:42:46 +030041_sre_ascii_tolower_impl(PyObject *module, int character);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030042
43static PyObject *
Serhiy Storchaka7186cc22017-05-05 10:42:46 +030044_sre_ascii_tolower(PyObject *module, PyObject *arg)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030045{
46 PyObject *return_value = NULL;
47 int character;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030048 int _return_value;
49
Serhiy Storchaka7186cc22017-05-05 10:42:46 +030050 if (!PyArg_Parse(arg, "i:ascii_tolower", &character)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030051 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030052 }
Serhiy Storchaka7186cc22017-05-05 10:42:46 +030053 _return_value = _sre_ascii_tolower_impl(module, character);
54 if ((_return_value == -1) && PyErr_Occurred()) {
55 goto exit;
56 }
57 return_value = PyLong_FromLong((long)_return_value);
Victor Stinner259f0e42017-01-17 01:35:17 +010058
Serhiy Storchaka7186cc22017-05-05 10:42:46 +030059exit:
60 return return_value;
61}
62
63PyDoc_STRVAR(_sre_unicode_tolower__doc__,
64"unicode_tolower($module, character, /)\n"
65"--\n"
66"\n");
67
68#define _SRE_UNICODE_TOLOWER_METHODDEF \
69 {"unicode_tolower", (PyCFunction)_sre_unicode_tolower, METH_O, _sre_unicode_tolower__doc__},
70
71static int
72_sre_unicode_tolower_impl(PyObject *module, int character);
73
74static PyObject *
75_sre_unicode_tolower(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_tolower", &character)) {
Victor Stinner259f0e42017-01-17 01:35:17 +010082 goto exit;
83 }
Serhiy Storchaka7186cc22017-05-05 10:42:46 +030084 _return_value = _sre_unicode_tolower_impl(module, character);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030085 if ((_return_value == -1) && PyErr_Occurred()) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030086 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030087 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030088 return_value = PyLong_FromLong((long)_return_value);
89
90exit:
91 return return_value;
92}
93
94PyDoc_STRVAR(_sre_SRE_Pattern_match__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +020095"match($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030096"--\n"
97"\n"
98"Matches zero or more characters at the beginning of the string.");
99
100#define _SRE_SRE_PATTERN_MATCH_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700101 {"match", (PyCFunction)_sre_SRE_Pattern_match, METH_FASTCALL, _sre_SRE_Pattern_match__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300102
103static PyObject *
104_sre_SRE_Pattern_match_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200105 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300106
107static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700108_sre_SRE_Pattern_match(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300109{
110 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200111 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
112 static _PyArg_Parser _parser = {"O|nn:match", _keywords, 0};
113 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300114 Py_ssize_t pos = 0;
115 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300116
Victor Stinner3e1fad62017-01-17 01:29:01 +0100117 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200118 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300119 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300120 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200121 return_value = _sre_SRE_Pattern_match_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300122
123exit:
124 return return_value;
125}
126
127PyDoc_STRVAR(_sre_SRE_Pattern_fullmatch__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200128"fullmatch($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300129"--\n"
130"\n"
131"Matches against all of the string");
132
133#define _SRE_SRE_PATTERN_FULLMATCH_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700134 {"fullmatch", (PyCFunction)_sre_SRE_Pattern_fullmatch, METH_FASTCALL, _sre_SRE_Pattern_fullmatch__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300135
136static PyObject *
137_sre_SRE_Pattern_fullmatch_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200138 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300139
140static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700141_sre_SRE_Pattern_fullmatch(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300142{
143 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200144 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
145 static _PyArg_Parser _parser = {"O|nn:fullmatch", _keywords, 0};
146 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300147 Py_ssize_t pos = 0;
148 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300149
Victor Stinner3e1fad62017-01-17 01:29:01 +0100150 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200151 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300152 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300153 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200154 return_value = _sre_SRE_Pattern_fullmatch_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300155
156exit:
157 return return_value;
158}
159
160PyDoc_STRVAR(_sre_SRE_Pattern_search__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200161"search($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300162"--\n"
163"\n"
164"Scan through string looking for a match, and return a corresponding match object instance.\n"
165"\n"
166"Return None if no position in the string matches.");
167
168#define _SRE_SRE_PATTERN_SEARCH_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700169 {"search", (PyCFunction)_sre_SRE_Pattern_search, METH_FASTCALL, _sre_SRE_Pattern_search__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300170
171static PyObject *
172_sre_SRE_Pattern_search_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200173 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300174
175static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700176_sre_SRE_Pattern_search(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300177{
178 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200179 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
180 static _PyArg_Parser _parser = {"O|nn:search", _keywords, 0};
181 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300182 Py_ssize_t pos = 0;
183 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300184
Victor Stinner3e1fad62017-01-17 01:29:01 +0100185 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200186 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300187 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300188 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200189 return_value = _sre_SRE_Pattern_search_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300190
191exit:
192 return return_value;
193}
194
195PyDoc_STRVAR(_sre_SRE_Pattern_findall__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200196"findall($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300197"--\n"
198"\n"
199"Return a list of all non-overlapping matches of pattern in string.");
200
201#define _SRE_SRE_PATTERN_FINDALL_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700202 {"findall", (PyCFunction)_sre_SRE_Pattern_findall, METH_FASTCALL, _sre_SRE_Pattern_findall__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300203
204static PyObject *
205_sre_SRE_Pattern_findall_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200206 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300207
208static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700209_sre_SRE_Pattern_findall(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300210{
211 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200212 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
213 static _PyArg_Parser _parser = {"O|nn:findall", _keywords, 0};
214 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300215 Py_ssize_t pos = 0;
216 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300217
Victor Stinner3e1fad62017-01-17 01:29:01 +0100218 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200219 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300220 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300221 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200222 return_value = _sre_SRE_Pattern_findall_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300223
224exit:
225 return return_value;
226}
227
228PyDoc_STRVAR(_sre_SRE_Pattern_finditer__doc__,
229"finditer($self, /, string, pos=0, endpos=sys.maxsize)\n"
230"--\n"
231"\n"
232"Return an iterator over all non-overlapping matches for the RE pattern in string.\n"
233"\n"
234"For each match, the iterator returns a match object.");
235
236#define _SRE_SRE_PATTERN_FINDITER_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700237 {"finditer", (PyCFunction)_sre_SRE_Pattern_finditer, METH_FASTCALL, _sre_SRE_Pattern_finditer__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300238
239static PyObject *
240_sre_SRE_Pattern_finditer_impl(PatternObject *self, PyObject *string,
241 Py_ssize_t pos, Py_ssize_t endpos);
242
243static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700244_sre_SRE_Pattern_finditer(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300245{
246 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300247 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
248 static _PyArg_Parser _parser = {"O|nn:finditer", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300249 PyObject *string;
250 Py_ssize_t pos = 0;
251 Py_ssize_t endpos = PY_SSIZE_T_MAX;
252
Victor Stinner3e1fad62017-01-17 01:29:01 +0100253 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300254 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300255 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300256 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300257 return_value = _sre_SRE_Pattern_finditer_impl(self, string, pos, endpos);
258
259exit:
260 return return_value;
261}
262
263PyDoc_STRVAR(_sre_SRE_Pattern_scanner__doc__,
264"scanner($self, /, string, pos=0, endpos=sys.maxsize)\n"
265"--\n"
266"\n");
267
268#define _SRE_SRE_PATTERN_SCANNER_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700269 {"scanner", (PyCFunction)_sre_SRE_Pattern_scanner, METH_FASTCALL, _sre_SRE_Pattern_scanner__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300270
271static PyObject *
272_sre_SRE_Pattern_scanner_impl(PatternObject *self, PyObject *string,
273 Py_ssize_t pos, Py_ssize_t endpos);
274
275static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700276_sre_SRE_Pattern_scanner(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300277{
278 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300279 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
280 static _PyArg_Parser _parser = {"O|nn:scanner", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300281 PyObject *string;
282 Py_ssize_t pos = 0;
283 Py_ssize_t endpos = PY_SSIZE_T_MAX;
284
Victor Stinner3e1fad62017-01-17 01:29:01 +0100285 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300286 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300287 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300288 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300289 return_value = _sre_SRE_Pattern_scanner_impl(self, string, pos, endpos);
290
291exit:
292 return return_value;
293}
294
295PyDoc_STRVAR(_sre_SRE_Pattern_split__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200296"split($self, /, string, maxsplit=0)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300297"--\n"
298"\n"
299"Split string by the occurrences of pattern.");
300
301#define _SRE_SRE_PATTERN_SPLIT_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700302 {"split", (PyCFunction)_sre_SRE_Pattern_split, METH_FASTCALL, _sre_SRE_Pattern_split__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300303
304static PyObject *
305_sre_SRE_Pattern_split_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200306 Py_ssize_t maxsplit);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300307
308static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700309_sre_SRE_Pattern_split(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300310{
311 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200312 static const char * const _keywords[] = {"string", "maxsplit", NULL};
313 static _PyArg_Parser _parser = {"O|n:split", _keywords, 0};
314 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300315 Py_ssize_t maxsplit = 0;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300316
Victor Stinner3e1fad62017-01-17 01:29:01 +0100317 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200318 &string, &maxsplit)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300319 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300320 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200321 return_value = _sre_SRE_Pattern_split_impl(self, string, maxsplit);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300322
323exit:
324 return return_value;
325}
326
327PyDoc_STRVAR(_sre_SRE_Pattern_sub__doc__,
328"sub($self, /, repl, string, count=0)\n"
329"--\n"
330"\n"
331"Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.");
332
333#define _SRE_SRE_PATTERN_SUB_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700334 {"sub", (PyCFunction)_sre_SRE_Pattern_sub, METH_FASTCALL, _sre_SRE_Pattern_sub__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300335
336static PyObject *
337_sre_SRE_Pattern_sub_impl(PatternObject *self, PyObject *repl,
338 PyObject *string, Py_ssize_t count);
339
340static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700341_sre_SRE_Pattern_sub(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300342{
343 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300344 static const char * const _keywords[] = {"repl", "string", "count", NULL};
345 static _PyArg_Parser _parser = {"OO|n:sub", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300346 PyObject *repl;
347 PyObject *string;
348 Py_ssize_t count = 0;
349
Victor Stinner3e1fad62017-01-17 01:29:01 +0100350 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300351 &repl, &string, &count)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300352 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300353 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300354 return_value = _sre_SRE_Pattern_sub_impl(self, repl, string, count);
355
356exit:
357 return return_value;
358}
359
360PyDoc_STRVAR(_sre_SRE_Pattern_subn__doc__,
361"subn($self, /, repl, string, count=0)\n"
362"--\n"
363"\n"
364"Return the tuple (new_string, number_of_subs_made) found by replacing the leftmost non-overlapping occurrences of pattern with the replacement repl.");
365
366#define _SRE_SRE_PATTERN_SUBN_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700367 {"subn", (PyCFunction)_sre_SRE_Pattern_subn, METH_FASTCALL, _sre_SRE_Pattern_subn__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300368
369static PyObject *
370_sre_SRE_Pattern_subn_impl(PatternObject *self, PyObject *repl,
371 PyObject *string, Py_ssize_t count);
372
373static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700374_sre_SRE_Pattern_subn(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300375{
376 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300377 static const char * const _keywords[] = {"repl", "string", "count", NULL};
378 static _PyArg_Parser _parser = {"OO|n:subn", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300379 PyObject *repl;
380 PyObject *string;
381 Py_ssize_t count = 0;
382
Victor Stinner3e1fad62017-01-17 01:29:01 +0100383 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300384 &repl, &string, &count)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300385 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300386 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300387 return_value = _sre_SRE_Pattern_subn_impl(self, repl, string, count);
388
389exit:
390 return return_value;
391}
392
393PyDoc_STRVAR(_sre_SRE_Pattern___copy____doc__,
394"__copy__($self, /)\n"
395"--\n"
396"\n");
397
398#define _SRE_SRE_PATTERN___COPY___METHODDEF \
399 {"__copy__", (PyCFunction)_sre_SRE_Pattern___copy__, METH_NOARGS, _sre_SRE_Pattern___copy____doc__},
400
401static PyObject *
402_sre_SRE_Pattern___copy___impl(PatternObject *self);
403
404static PyObject *
405_sre_SRE_Pattern___copy__(PatternObject *self, PyObject *Py_UNUSED(ignored))
406{
407 return _sre_SRE_Pattern___copy___impl(self);
408}
409
410PyDoc_STRVAR(_sre_SRE_Pattern___deepcopy____doc__,
Serhiy Storchakafdbd0112017-04-16 10:16:03 +0300411"__deepcopy__($self, memo, /)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300412"--\n"
413"\n");
414
415#define _SRE_SRE_PATTERN___DEEPCOPY___METHODDEF \
Serhiy Storchakafdbd0112017-04-16 10:16:03 +0300416 {"__deepcopy__", (PyCFunction)_sre_SRE_Pattern___deepcopy__, METH_O, _sre_SRE_Pattern___deepcopy____doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300417
418PyDoc_STRVAR(_sre_compile__doc__,
419"compile($module, /, pattern, flags, code, groups, groupindex,\n"
420" indexgroup)\n"
421"--\n"
422"\n");
423
424#define _SRE_COMPILE_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700425 {"compile", (PyCFunction)_sre_compile, METH_FASTCALL, _sre_compile__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300426
427static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300428_sre_compile_impl(PyObject *module, PyObject *pattern, int flags,
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300429 PyObject *code, Py_ssize_t groups, PyObject *groupindex,
430 PyObject *indexgroup);
431
432static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700433_sre_compile(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300434{
435 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300436 static const char * const _keywords[] = {"pattern", "flags", "code", "groups", "groupindex", "indexgroup", NULL};
Victor Stinner726a57d2016-11-22 23:04:39 +0100437 static _PyArg_Parser _parser = {"OiO!nO!O!:compile", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300438 PyObject *pattern;
439 int flags;
440 PyObject *code;
441 Py_ssize_t groups;
442 PyObject *groupindex;
443 PyObject *indexgroup;
444
Victor Stinner3e1fad62017-01-17 01:29:01 +0100445 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Victor Stinner726a57d2016-11-22 23:04:39 +0100446 &pattern, &flags, &PyList_Type, &code, &groups, &PyDict_Type, &groupindex, &PyTuple_Type, &indexgroup)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300447 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300448 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300449 return_value = _sre_compile_impl(module, pattern, flags, code, groups, groupindex, indexgroup);
450
451exit:
452 return return_value;
453}
454
455PyDoc_STRVAR(_sre_SRE_Match_expand__doc__,
456"expand($self, /, template)\n"
457"--\n"
458"\n"
459"Return the string obtained by doing backslash substitution on the string template, as done by the sub() method.");
460
461#define _SRE_SRE_MATCH_EXPAND_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700462 {"expand", (PyCFunction)_sre_SRE_Match_expand, METH_FASTCALL, _sre_SRE_Match_expand__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300463
464static PyObject *
465_sre_SRE_Match_expand_impl(MatchObject *self, PyObject *template);
466
467static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700468_sre_SRE_Match_expand(MatchObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300469{
470 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300471 static const char * const _keywords[] = {"template", NULL};
472 static _PyArg_Parser _parser = {"O:expand", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300473 PyObject *template;
474
Victor Stinner3e1fad62017-01-17 01:29:01 +0100475 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300476 &template)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300477 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300478 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300479 return_value = _sre_SRE_Match_expand_impl(self, template);
480
481exit:
482 return return_value;
483}
484
485PyDoc_STRVAR(_sre_SRE_Match_groups__doc__,
486"groups($self, /, default=None)\n"
487"--\n"
488"\n"
489"Return a tuple containing all the subgroups of the match, from 1.\n"
490"\n"
491" default\n"
492" Is used for groups that did not participate in the match.");
493
494#define _SRE_SRE_MATCH_GROUPS_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700495 {"groups", (PyCFunction)_sre_SRE_Match_groups, METH_FASTCALL, _sre_SRE_Match_groups__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300496
497static PyObject *
498_sre_SRE_Match_groups_impl(MatchObject *self, PyObject *default_value);
499
500static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700501_sre_SRE_Match_groups(MatchObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300502{
503 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300504 static const char * const _keywords[] = {"default", NULL};
505 static _PyArg_Parser _parser = {"|O:groups", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300506 PyObject *default_value = Py_None;
507
Victor Stinner3e1fad62017-01-17 01:29:01 +0100508 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300509 &default_value)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300510 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300511 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300512 return_value = _sre_SRE_Match_groups_impl(self, default_value);
513
514exit:
515 return return_value;
516}
517
518PyDoc_STRVAR(_sre_SRE_Match_groupdict__doc__,
519"groupdict($self, /, default=None)\n"
520"--\n"
521"\n"
522"Return a dictionary containing all the named subgroups of the match, keyed by the subgroup name.\n"
523"\n"
524" default\n"
525" Is used for groups that did not participate in the match.");
526
527#define _SRE_SRE_MATCH_GROUPDICT_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700528 {"groupdict", (PyCFunction)_sre_SRE_Match_groupdict, METH_FASTCALL, _sre_SRE_Match_groupdict__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300529
530static PyObject *
531_sre_SRE_Match_groupdict_impl(MatchObject *self, PyObject *default_value);
532
533static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700534_sre_SRE_Match_groupdict(MatchObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300535{
536 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300537 static const char * const _keywords[] = {"default", NULL};
538 static _PyArg_Parser _parser = {"|O:groupdict", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300539 PyObject *default_value = Py_None;
540
Victor Stinner3e1fad62017-01-17 01:29:01 +0100541 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300542 &default_value)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300543 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300544 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300545 return_value = _sre_SRE_Match_groupdict_impl(self, default_value);
546
547exit:
548 return return_value;
549}
550
551PyDoc_STRVAR(_sre_SRE_Match_start__doc__,
552"start($self, group=0, /)\n"
553"--\n"
554"\n"
555"Return index of the start of the substring matched by group.");
556
557#define _SRE_SRE_MATCH_START_METHODDEF \
Victor Stinner0c4a8282017-01-17 02:21:47 +0100558 {"start", (PyCFunction)_sre_SRE_Match_start, METH_FASTCALL, _sre_SRE_Match_start__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300559
560static Py_ssize_t
561_sre_SRE_Match_start_impl(MatchObject *self, PyObject *group);
562
563static PyObject *
Victor Stinner0c4a8282017-01-17 02:21:47 +0100564_sre_SRE_Match_start(MatchObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300565{
566 PyObject *return_value = NULL;
567 PyObject *group = NULL;
568 Py_ssize_t _return_value;
569
Victor Stinner0c4a8282017-01-17 02:21:47 +0100570 if (!_PyArg_UnpackStack(args, nargs, "start",
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300571 0, 1,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300572 &group)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300573 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300574 }
Victor Stinner0c4a8282017-01-17 02:21:47 +0100575
576 if (!_PyArg_NoStackKeywords("start", kwnames)) {
577 goto exit;
578 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300579 _return_value = _sre_SRE_Match_start_impl(self, group);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300580 if ((_return_value == -1) && PyErr_Occurred()) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300581 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300582 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300583 return_value = PyLong_FromSsize_t(_return_value);
584
585exit:
586 return return_value;
587}
588
589PyDoc_STRVAR(_sre_SRE_Match_end__doc__,
590"end($self, group=0, /)\n"
591"--\n"
592"\n"
593"Return index of the end of the substring matched by group.");
594
595#define _SRE_SRE_MATCH_END_METHODDEF \
Victor Stinner0c4a8282017-01-17 02:21:47 +0100596 {"end", (PyCFunction)_sre_SRE_Match_end, METH_FASTCALL, _sre_SRE_Match_end__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300597
598static Py_ssize_t
599_sre_SRE_Match_end_impl(MatchObject *self, PyObject *group);
600
601static PyObject *
Victor Stinner0c4a8282017-01-17 02:21:47 +0100602_sre_SRE_Match_end(MatchObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300603{
604 PyObject *return_value = NULL;
605 PyObject *group = NULL;
606 Py_ssize_t _return_value;
607
Victor Stinner0c4a8282017-01-17 02:21:47 +0100608 if (!_PyArg_UnpackStack(args, nargs, "end",
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300609 0, 1,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300610 &group)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300611 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300612 }
Victor Stinner0c4a8282017-01-17 02:21:47 +0100613
614 if (!_PyArg_NoStackKeywords("end", kwnames)) {
615 goto exit;
616 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300617 _return_value = _sre_SRE_Match_end_impl(self, group);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300618 if ((_return_value == -1) && PyErr_Occurred()) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300619 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300620 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300621 return_value = PyLong_FromSsize_t(_return_value);
622
623exit:
624 return return_value;
625}
626
627PyDoc_STRVAR(_sre_SRE_Match_span__doc__,
628"span($self, group=0, /)\n"
629"--\n"
630"\n"
631"For MatchObject m, return the 2-tuple (m.start(group), m.end(group)).");
632
633#define _SRE_SRE_MATCH_SPAN_METHODDEF \
Victor Stinner0c4a8282017-01-17 02:21:47 +0100634 {"span", (PyCFunction)_sre_SRE_Match_span, METH_FASTCALL, _sre_SRE_Match_span__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300635
636static PyObject *
637_sre_SRE_Match_span_impl(MatchObject *self, PyObject *group);
638
639static PyObject *
Victor Stinner0c4a8282017-01-17 02:21:47 +0100640_sre_SRE_Match_span(MatchObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300641{
642 PyObject *return_value = NULL;
643 PyObject *group = NULL;
644
Victor Stinner0c4a8282017-01-17 02:21:47 +0100645 if (!_PyArg_UnpackStack(args, nargs, "span",
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300646 0, 1,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300647 &group)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300648 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300649 }
Victor Stinner0c4a8282017-01-17 02:21:47 +0100650
651 if (!_PyArg_NoStackKeywords("span", kwnames)) {
652 goto exit;
653 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300654 return_value = _sre_SRE_Match_span_impl(self, group);
655
656exit:
657 return return_value;
658}
659
660PyDoc_STRVAR(_sre_SRE_Match___copy____doc__,
661"__copy__($self, /)\n"
662"--\n"
663"\n");
664
665#define _SRE_SRE_MATCH___COPY___METHODDEF \
666 {"__copy__", (PyCFunction)_sre_SRE_Match___copy__, METH_NOARGS, _sre_SRE_Match___copy____doc__},
667
668static PyObject *
669_sre_SRE_Match___copy___impl(MatchObject *self);
670
671static PyObject *
672_sre_SRE_Match___copy__(MatchObject *self, PyObject *Py_UNUSED(ignored))
673{
674 return _sre_SRE_Match___copy___impl(self);
675}
676
677PyDoc_STRVAR(_sre_SRE_Match___deepcopy____doc__,
Serhiy Storchakafdbd0112017-04-16 10:16:03 +0300678"__deepcopy__($self, memo, /)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300679"--\n"
680"\n");
681
682#define _SRE_SRE_MATCH___DEEPCOPY___METHODDEF \
Serhiy Storchakafdbd0112017-04-16 10:16:03 +0300683 {"__deepcopy__", (PyCFunction)_sre_SRE_Match___deepcopy__, METH_O, _sre_SRE_Match___deepcopy____doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300684
685PyDoc_STRVAR(_sre_SRE_Scanner_match__doc__,
686"match($self, /)\n"
687"--\n"
688"\n");
689
690#define _SRE_SRE_SCANNER_MATCH_METHODDEF \
691 {"match", (PyCFunction)_sre_SRE_Scanner_match, METH_NOARGS, _sre_SRE_Scanner_match__doc__},
692
693static PyObject *
694_sre_SRE_Scanner_match_impl(ScannerObject *self);
695
696static PyObject *
697_sre_SRE_Scanner_match(ScannerObject *self, PyObject *Py_UNUSED(ignored))
698{
699 return _sre_SRE_Scanner_match_impl(self);
700}
701
702PyDoc_STRVAR(_sre_SRE_Scanner_search__doc__,
703"search($self, /)\n"
704"--\n"
705"\n");
706
707#define _SRE_SRE_SCANNER_SEARCH_METHODDEF \
708 {"search", (PyCFunction)_sre_SRE_Scanner_search, METH_NOARGS, _sre_SRE_Scanner_search__doc__},
709
710static PyObject *
711_sre_SRE_Scanner_search_impl(ScannerObject *self);
712
713static PyObject *
714_sre_SRE_Scanner_search(ScannerObject *self, PyObject *Py_UNUSED(ignored))
715{
716 return _sre_SRE_Scanner_search_impl(self);
717}
Serhiy Storchaka7186cc22017-05-05 10:42:46 +0300718/*[clinic end generated code: output=811e67d7f8f5052e input=a9049054013a1b77]*/