1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4
5 PyDoc_STRVAR(unicode_title__doc__,
6 "title($self, /)\n"
7 "--\n"
8 "\n"
9 "Return a version of the string where each word is titlecased.\n"
10 "\n"
11 "More specifically, words start with uppercased characters and all remaining\n"
12 "cased characters have lower case.");
13
14 #define UNICODE_TITLE_METHODDEF \
15 {"title", (PyCFunction)unicode_title, METH_NOARGS, unicode_title__doc__},
16
17 static PyObject *
18 unicode_title_impl(PyObject *self);
19
20 static PyObject *
unicode_title(PyObject * self,PyObject * Py_UNUSED (ignored))21 unicode_title(PyObject *self, PyObject *Py_UNUSED(ignored))
22 {
23 return unicode_title_impl(self);
24 }
25
26 PyDoc_STRVAR(unicode_capitalize__doc__,
27 "capitalize($self, /)\n"
28 "--\n"
29 "\n"
30 "Return a capitalized version of the string.\n"
31 "\n"
32 "More specifically, make the first character have upper case and the rest lower\n"
33 "case.");
34
35 #define UNICODE_CAPITALIZE_METHODDEF \
36 {"capitalize", (PyCFunction)unicode_capitalize, METH_NOARGS, unicode_capitalize__doc__},
37
38 static PyObject *
39 unicode_capitalize_impl(PyObject *self);
40
41 static PyObject *
unicode_capitalize(PyObject * self,PyObject * Py_UNUSED (ignored))42 unicode_capitalize(PyObject *self, PyObject *Py_UNUSED(ignored))
43 {
44 return unicode_capitalize_impl(self);
45 }
46
47 PyDoc_STRVAR(unicode_casefold__doc__,
48 "casefold($self, /)\n"
49 "--\n"
50 "\n"
51 "Return a version of the string suitable for caseless comparisons.");
52
53 #define UNICODE_CASEFOLD_METHODDEF \
54 {"casefold", (PyCFunction)unicode_casefold, METH_NOARGS, unicode_casefold__doc__},
55
56 static PyObject *
57 unicode_casefold_impl(PyObject *self);
58
59 static PyObject *
unicode_casefold(PyObject * self,PyObject * Py_UNUSED (ignored))60 unicode_casefold(PyObject *self, PyObject *Py_UNUSED(ignored))
61 {
62 return unicode_casefold_impl(self);
63 }
64
65 PyDoc_STRVAR(unicode_center__doc__,
66 "center($self, width, fillchar=\' \', /)\n"
67 "--\n"
68 "\n"
69 "Return a centered string of length width.\n"
70 "\n"
71 "Padding is done using the specified fill character (default is a space).");
72
73 #define UNICODE_CENTER_METHODDEF \
74 {"center", (PyCFunction)(void(*)(void))unicode_center, METH_FASTCALL, unicode_center__doc__},
75
76 static PyObject *
77 unicode_center_impl(PyObject *self, Py_ssize_t width, Py_UCS4 fillchar);
78
79 static PyObject *
unicode_center(PyObject * self,PyObject * const * args,Py_ssize_t nargs)80 unicode_center(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
81 {
82 PyObject *return_value = NULL;
83 Py_ssize_t width;
84 Py_UCS4 fillchar = ' ';
85
86 if (!_PyArg_CheckPositional("center", nargs, 1, 2)) {
87 goto exit;
88 }
89 if (PyFloat_Check(args[0])) {
90 PyErr_SetString(PyExc_TypeError,
91 "integer argument expected, got float" );
92 goto exit;
93 }
94 {
95 Py_ssize_t ival = -1;
96 PyObject *iobj = PyNumber_Index(args[0]);
97 if (iobj != NULL) {
98 ival = PyLong_AsSsize_t(iobj);
99 Py_DECREF(iobj);
100 }
101 if (ival == -1 && PyErr_Occurred()) {
102 goto exit;
103 }
104 width = ival;
105 }
106 if (nargs < 2) {
107 goto skip_optional;
108 }
109 if (!convert_uc(args[1], &fillchar)) {
110 goto exit;
111 }
112 skip_optional:
113 return_value = unicode_center_impl(self, width, fillchar);
114
115 exit:
116 return return_value;
117 }
118
119 PyDoc_STRVAR(unicode_encode__doc__,
120 "encode($self, /, encoding=\'utf-8\', errors=\'strict\')\n"
121 "--\n"
122 "\n"
123 "Encode the string using the codec registered for encoding.\n"
124 "\n"
125 " encoding\n"
126 " The encoding in which to encode the string.\n"
127 " errors\n"
128 " The error handling scheme to use for encoding errors.\n"
129 " The default is \'strict\' meaning that encoding errors raise a\n"
130 " UnicodeEncodeError. Other possible values are \'ignore\', \'replace\' and\n"
131 " \'xmlcharrefreplace\' as well as any other name registered with\n"
132 " codecs.register_error that can handle UnicodeEncodeErrors.");
133
134 #define UNICODE_ENCODE_METHODDEF \
135 {"encode", (PyCFunction)(void(*)(void))unicode_encode, METH_FASTCALL|METH_KEYWORDS, unicode_encode__doc__},
136
137 static PyObject *
138 unicode_encode_impl(PyObject *self, const char *encoding, const char *errors);
139
140 static PyObject *
unicode_encode(PyObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)141 unicode_encode(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
142 {
143 PyObject *return_value = NULL;
144 static const char * const _keywords[] = {"encoding", "errors", NULL};
145 static _PyArg_Parser _parser = {NULL, _keywords, "encode", 0};
146 PyObject *argsbuf[2];
147 Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
148 const char *encoding = NULL;
149 const char *errors = NULL;
150
151 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
152 if (!args) {
153 goto exit;
154 }
155 if (!noptargs) {
156 goto skip_optional_pos;
157 }
158 if (args[0]) {
159 if (!PyUnicode_Check(args[0])) {
160 _PyArg_BadArgument("encode", "argument 'encoding'", "str", args[0]);
161 goto exit;
162 }
163 Py_ssize_t encoding_length;
164 encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
165 if (encoding == NULL) {
166 goto exit;
167 }
168 if (strlen(encoding) != (size_t)encoding_length) {
169 PyErr_SetString(PyExc_ValueError, "embedded null character");
170 goto exit;
171 }
172 if (!--noptargs) {
173 goto skip_optional_pos;
174 }
175 }
176 if (!PyUnicode_Check(args[1])) {
177 _PyArg_BadArgument("encode", "argument 'errors'", "str", args[1]);
178 goto exit;
179 }
180 Py_ssize_t errors_length;
181 errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
182 if (errors == NULL) {
183 goto exit;
184 }
185 if (strlen(errors) != (size_t)errors_length) {
186 PyErr_SetString(PyExc_ValueError, "embedded null character");
187 goto exit;
188 }
189 skip_optional_pos:
190 return_value = unicode_encode_impl(self, encoding, errors);
191
192 exit:
193 return return_value;
194 }
195
196 PyDoc_STRVAR(unicode_expandtabs__doc__,
197 "expandtabs($self, /, tabsize=8)\n"
198 "--\n"
199 "\n"
200 "Return a copy where all tab characters are expanded using spaces.\n"
201 "\n"
202 "If tabsize is not given, a tab size of 8 characters is assumed.");
203
204 #define UNICODE_EXPANDTABS_METHODDEF \
205 {"expandtabs", (PyCFunction)(void(*)(void))unicode_expandtabs, METH_FASTCALL|METH_KEYWORDS, unicode_expandtabs__doc__},
206
207 static PyObject *
208 unicode_expandtabs_impl(PyObject *self, int tabsize);
209
210 static PyObject *
unicode_expandtabs(PyObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)211 unicode_expandtabs(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
212 {
213 PyObject *return_value = NULL;
214 static const char * const _keywords[] = {"tabsize", NULL};
215 static _PyArg_Parser _parser = {NULL, _keywords, "expandtabs", 0};
216 PyObject *argsbuf[1];
217 Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
218 int tabsize = 8;
219
220 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
221 if (!args) {
222 goto exit;
223 }
224 if (!noptargs) {
225 goto skip_optional_pos;
226 }
227 if (PyFloat_Check(args[0])) {
228 PyErr_SetString(PyExc_TypeError,
229 "integer argument expected, got float" );
230 goto exit;
231 }
232 tabsize = _PyLong_AsInt(args[0]);
233 if (tabsize == -1 && PyErr_Occurred()) {
234 goto exit;
235 }
236 skip_optional_pos:
237 return_value = unicode_expandtabs_impl(self, tabsize);
238
239 exit:
240 return return_value;
241 }
242
243 PyDoc_STRVAR(unicode_isascii__doc__,
244 "isascii($self, /)\n"
245 "--\n"
246 "\n"
247 "Return True if all characters in the string are ASCII, False otherwise.\n"
248 "\n"
249 "ASCII characters have code points in the range U+0000-U+007F.\n"
250 "Empty string is ASCII too.");
251
252 #define UNICODE_ISASCII_METHODDEF \
253 {"isascii", (PyCFunction)unicode_isascii, METH_NOARGS, unicode_isascii__doc__},
254
255 static PyObject *
256 unicode_isascii_impl(PyObject *self);
257
258 static PyObject *
unicode_isascii(PyObject * self,PyObject * Py_UNUSED (ignored))259 unicode_isascii(PyObject *self, PyObject *Py_UNUSED(ignored))
260 {
261 return unicode_isascii_impl(self);
262 }
263
264 PyDoc_STRVAR(unicode_islower__doc__,
265 "islower($self, /)\n"
266 "--\n"
267 "\n"
268 "Return True if the string is a lowercase string, False otherwise.\n"
269 "\n"
270 "A string is lowercase if all cased characters in the string are lowercase and\n"
271 "there is at least one cased character in the string.");
272
273 #define UNICODE_ISLOWER_METHODDEF \
274 {"islower", (PyCFunction)unicode_islower, METH_NOARGS, unicode_islower__doc__},
275
276 static PyObject *
277 unicode_islower_impl(PyObject *self);
278
279 static PyObject *
unicode_islower(PyObject * self,PyObject * Py_UNUSED (ignored))280 unicode_islower(PyObject *self, PyObject *Py_UNUSED(ignored))
281 {
282 return unicode_islower_impl(self);
283 }
284
285 PyDoc_STRVAR(unicode_isupper__doc__,
286 "isupper($self, /)\n"
287 "--\n"
288 "\n"
289 "Return True if the string is an uppercase string, False otherwise.\n"
290 "\n"
291 "A string is uppercase if all cased characters in the string are uppercase and\n"
292 "there is at least one cased character in the string.");
293
294 #define UNICODE_ISUPPER_METHODDEF \
295 {"isupper", (PyCFunction)unicode_isupper, METH_NOARGS, unicode_isupper__doc__},
296
297 static PyObject *
298 unicode_isupper_impl(PyObject *self);
299
300 static PyObject *
unicode_isupper(PyObject * self,PyObject * Py_UNUSED (ignored))301 unicode_isupper(PyObject *self, PyObject *Py_UNUSED(ignored))
302 {
303 return unicode_isupper_impl(self);
304 }
305
306 PyDoc_STRVAR(unicode_istitle__doc__,
307 "istitle($self, /)\n"
308 "--\n"
309 "\n"
310 "Return True if the string is a title-cased string, False otherwise.\n"
311 "\n"
312 "In a title-cased string, upper- and title-case characters may only\n"
313 "follow uncased characters and lowercase characters only cased ones.");
314
315 #define UNICODE_ISTITLE_METHODDEF \
316 {"istitle", (PyCFunction)unicode_istitle, METH_NOARGS, unicode_istitle__doc__},
317
318 static PyObject *
319 unicode_istitle_impl(PyObject *self);
320
321 static PyObject *
unicode_istitle(PyObject * self,PyObject * Py_UNUSED (ignored))322 unicode_istitle(PyObject *self, PyObject *Py_UNUSED(ignored))
323 {
324 return unicode_istitle_impl(self);
325 }
326
327 PyDoc_STRVAR(unicode_isspace__doc__,
328 "isspace($self, /)\n"
329 "--\n"
330 "\n"
331 "Return True if the string is a whitespace string, False otherwise.\n"
332 "\n"
333 "A string is whitespace if all characters in the string are whitespace and there\n"
334 "is at least one character in the string.");
335
336 #define UNICODE_ISSPACE_METHODDEF \
337 {"isspace", (PyCFunction)unicode_isspace, METH_NOARGS, unicode_isspace__doc__},
338
339 static PyObject *
340 unicode_isspace_impl(PyObject *self);
341
342 static PyObject *
unicode_isspace(PyObject * self,PyObject * Py_UNUSED (ignored))343 unicode_isspace(PyObject *self, PyObject *Py_UNUSED(ignored))
344 {
345 return unicode_isspace_impl(self);
346 }
347
348 PyDoc_STRVAR(unicode_isalpha__doc__,
349 "isalpha($self, /)\n"
350 "--\n"
351 "\n"
352 "Return True if the string is an alphabetic string, False otherwise.\n"
353 "\n"
354 "A string is alphabetic if all characters in the string are alphabetic and there\n"
355 "is at least one character in the string.");
356
357 #define UNICODE_ISALPHA_METHODDEF \
358 {"isalpha", (PyCFunction)unicode_isalpha, METH_NOARGS, unicode_isalpha__doc__},
359
360 static PyObject *
361 unicode_isalpha_impl(PyObject *self);
362
363 static PyObject *
unicode_isalpha(PyObject * self,PyObject * Py_UNUSED (ignored))364 unicode_isalpha(PyObject *self, PyObject *Py_UNUSED(ignored))
365 {
366 return unicode_isalpha_impl(self);
367 }
368
369 PyDoc_STRVAR(unicode_isalnum__doc__,
370 "isalnum($self, /)\n"
371 "--\n"
372 "\n"
373 "Return True if the string is an alpha-numeric string, False otherwise.\n"
374 "\n"
375 "A string is alpha-numeric if all characters in the string are alpha-numeric and\n"
376 "there is at least one character in the string.");
377
378 #define UNICODE_ISALNUM_METHODDEF \
379 {"isalnum", (PyCFunction)unicode_isalnum, METH_NOARGS, unicode_isalnum__doc__},
380
381 static PyObject *
382 unicode_isalnum_impl(PyObject *self);
383
384 static PyObject *
unicode_isalnum(PyObject * self,PyObject * Py_UNUSED (ignored))385 unicode_isalnum(PyObject *self, PyObject *Py_UNUSED(ignored))
386 {
387 return unicode_isalnum_impl(self);
388 }
389
390 PyDoc_STRVAR(unicode_isdecimal__doc__,
391 "isdecimal($self, /)\n"
392 "--\n"
393 "\n"
394 "Return True if the string is a decimal string, False otherwise.\n"
395 "\n"
396 "A string is a decimal string if all characters in the string are decimal and\n"
397 "there is at least one character in the string.");
398
399 #define UNICODE_ISDECIMAL_METHODDEF \
400 {"isdecimal", (PyCFunction)unicode_isdecimal, METH_NOARGS, unicode_isdecimal__doc__},
401
402 static PyObject *
403 unicode_isdecimal_impl(PyObject *self);
404
405 static PyObject *
unicode_isdecimal(PyObject * self,PyObject * Py_UNUSED (ignored))406 unicode_isdecimal(PyObject *self, PyObject *Py_UNUSED(ignored))
407 {
408 return unicode_isdecimal_impl(self);
409 }
410
411 PyDoc_STRVAR(unicode_isdigit__doc__,
412 "isdigit($self, /)\n"
413 "--\n"
414 "\n"
415 "Return True if the string is a digit string, False otherwise.\n"
416 "\n"
417 "A string is a digit string if all characters in the string are digits and there\n"
418 "is at least one character in the string.");
419
420 #define UNICODE_ISDIGIT_METHODDEF \
421 {"isdigit", (PyCFunction)unicode_isdigit, METH_NOARGS, unicode_isdigit__doc__},
422
423 static PyObject *
424 unicode_isdigit_impl(PyObject *self);
425
426 static PyObject *
unicode_isdigit(PyObject * self,PyObject * Py_UNUSED (ignored))427 unicode_isdigit(PyObject *self, PyObject *Py_UNUSED(ignored))
428 {
429 return unicode_isdigit_impl(self);
430 }
431
432 PyDoc_STRVAR(unicode_isnumeric__doc__,
433 "isnumeric($self, /)\n"
434 "--\n"
435 "\n"
436 "Return True if the string is a numeric string, False otherwise.\n"
437 "\n"
438 "A string is numeric if all characters in the string are numeric and there is at\n"
439 "least one character in the string.");
440
441 #define UNICODE_ISNUMERIC_METHODDEF \
442 {"isnumeric", (PyCFunction)unicode_isnumeric, METH_NOARGS, unicode_isnumeric__doc__},
443
444 static PyObject *
445 unicode_isnumeric_impl(PyObject *self);
446
447 static PyObject *
unicode_isnumeric(PyObject * self,PyObject * Py_UNUSED (ignored))448 unicode_isnumeric(PyObject *self, PyObject *Py_UNUSED(ignored))
449 {
450 return unicode_isnumeric_impl(self);
451 }
452
453 PyDoc_STRVAR(unicode_isidentifier__doc__,
454 "isidentifier($self, /)\n"
455 "--\n"
456 "\n"
457 "Return True if the string is a valid Python identifier, False otherwise.\n"
458 "\n"
459 "Call keyword.iskeyword(s) to test whether string s is a reserved identifier,\n"
460 "such as \"def\" or \"class\".");
461
462 #define UNICODE_ISIDENTIFIER_METHODDEF \
463 {"isidentifier", (PyCFunction)unicode_isidentifier, METH_NOARGS, unicode_isidentifier__doc__},
464
465 static PyObject *
466 unicode_isidentifier_impl(PyObject *self);
467
468 static PyObject *
unicode_isidentifier(PyObject * self,PyObject * Py_UNUSED (ignored))469 unicode_isidentifier(PyObject *self, PyObject *Py_UNUSED(ignored))
470 {
471 return unicode_isidentifier_impl(self);
472 }
473
474 PyDoc_STRVAR(unicode_isprintable__doc__,
475 "isprintable($self, /)\n"
476 "--\n"
477 "\n"
478 "Return True if the string is printable, False otherwise.\n"
479 "\n"
480 "A string is printable if all of its characters are considered printable in\n"
481 "repr() or if it is empty.");
482
483 #define UNICODE_ISPRINTABLE_METHODDEF \
484 {"isprintable", (PyCFunction)unicode_isprintable, METH_NOARGS, unicode_isprintable__doc__},
485
486 static PyObject *
487 unicode_isprintable_impl(PyObject *self);
488
489 static PyObject *
unicode_isprintable(PyObject * self,PyObject * Py_UNUSED (ignored))490 unicode_isprintable(PyObject *self, PyObject *Py_UNUSED(ignored))
491 {
492 return unicode_isprintable_impl(self);
493 }
494
495 PyDoc_STRVAR(unicode_join__doc__,
496 "join($self, iterable, /)\n"
497 "--\n"
498 "\n"
499 "Concatenate any number of strings.\n"
500 "\n"
501 "The string whose method is called is inserted in between each given string.\n"
502 "The result is returned as a new string.\n"
503 "\n"
504 "Example: \'.\'.join([\'ab\', \'pq\', \'rs\']) -> \'ab.pq.rs\'");
505
506 #define UNICODE_JOIN_METHODDEF \
507 {"join", (PyCFunction)unicode_join, METH_O, unicode_join__doc__},
508
509 PyDoc_STRVAR(unicode_ljust__doc__,
510 "ljust($self, width, fillchar=\' \', /)\n"
511 "--\n"
512 "\n"
513 "Return a left-justified string of length width.\n"
514 "\n"
515 "Padding is done using the specified fill character (default is a space).");
516
517 #define UNICODE_LJUST_METHODDEF \
518 {"ljust", (PyCFunction)(void(*)(void))unicode_ljust, METH_FASTCALL, unicode_ljust__doc__},
519
520 static PyObject *
521 unicode_ljust_impl(PyObject *self, Py_ssize_t width, Py_UCS4 fillchar);
522
523 static PyObject *
unicode_ljust(PyObject * self,PyObject * const * args,Py_ssize_t nargs)524 unicode_ljust(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
525 {
526 PyObject *return_value = NULL;
527 Py_ssize_t width;
528 Py_UCS4 fillchar = ' ';
529
530 if (!_PyArg_CheckPositional("ljust", nargs, 1, 2)) {
531 goto exit;
532 }
533 if (PyFloat_Check(args[0])) {
534 PyErr_SetString(PyExc_TypeError,
535 "integer argument expected, got float" );
536 goto exit;
537 }
538 {
539 Py_ssize_t ival = -1;
540 PyObject *iobj = PyNumber_Index(args[0]);
541 if (iobj != NULL) {
542 ival = PyLong_AsSsize_t(iobj);
543 Py_DECREF(iobj);
544 }
545 if (ival == -1 && PyErr_Occurred()) {
546 goto exit;
547 }
548 width = ival;
549 }
550 if (nargs < 2) {
551 goto skip_optional;
552 }
553 if (!convert_uc(args[1], &fillchar)) {
554 goto exit;
555 }
556 skip_optional:
557 return_value = unicode_ljust_impl(self, width, fillchar);
558
559 exit:
560 return return_value;
561 }
562
563 PyDoc_STRVAR(unicode_lower__doc__,
564 "lower($self, /)\n"
565 "--\n"
566 "\n"
567 "Return a copy of the string converted to lowercase.");
568
569 #define UNICODE_LOWER_METHODDEF \
570 {"lower", (PyCFunction)unicode_lower, METH_NOARGS, unicode_lower__doc__},
571
572 static PyObject *
573 unicode_lower_impl(PyObject *self);
574
575 static PyObject *
unicode_lower(PyObject * self,PyObject * Py_UNUSED (ignored))576 unicode_lower(PyObject *self, PyObject *Py_UNUSED(ignored))
577 {
578 return unicode_lower_impl(self);
579 }
580
581 PyDoc_STRVAR(unicode_strip__doc__,
582 "strip($self, chars=None, /)\n"
583 "--\n"
584 "\n"
585 "Return a copy of the string with leading and trailing whitespace removed.\n"
586 "\n"
587 "If chars is given and not None, remove characters in chars instead.");
588
589 #define UNICODE_STRIP_METHODDEF \
590 {"strip", (PyCFunction)(void(*)(void))unicode_strip, METH_FASTCALL, unicode_strip__doc__},
591
592 static PyObject *
593 unicode_strip_impl(PyObject *self, PyObject *chars);
594
595 static PyObject *
unicode_strip(PyObject * self,PyObject * const * args,Py_ssize_t nargs)596 unicode_strip(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
597 {
598 PyObject *return_value = NULL;
599 PyObject *chars = Py_None;
600
601 if (!_PyArg_CheckPositional("strip", nargs, 0, 1)) {
602 goto exit;
603 }
604 if (nargs < 1) {
605 goto skip_optional;
606 }
607 chars = args[0];
608 skip_optional:
609 return_value = unicode_strip_impl(self, chars);
610
611 exit:
612 return return_value;
613 }
614
615 PyDoc_STRVAR(unicode_lstrip__doc__,
616 "lstrip($self, chars=None, /)\n"
617 "--\n"
618 "\n"
619 "Return a copy of the string with leading whitespace removed.\n"
620 "\n"
621 "If chars is given and not None, remove characters in chars instead.");
622
623 #define UNICODE_LSTRIP_METHODDEF \
624 {"lstrip", (PyCFunction)(void(*)(void))unicode_lstrip, METH_FASTCALL, unicode_lstrip__doc__},
625
626 static PyObject *
627 unicode_lstrip_impl(PyObject *self, PyObject *chars);
628
629 static PyObject *
unicode_lstrip(PyObject * self,PyObject * const * args,Py_ssize_t nargs)630 unicode_lstrip(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
631 {
632 PyObject *return_value = NULL;
633 PyObject *chars = Py_None;
634
635 if (!_PyArg_CheckPositional("lstrip", nargs, 0, 1)) {
636 goto exit;
637 }
638 if (nargs < 1) {
639 goto skip_optional;
640 }
641 chars = args[0];
642 skip_optional:
643 return_value = unicode_lstrip_impl(self, chars);
644
645 exit:
646 return return_value;
647 }
648
649 PyDoc_STRVAR(unicode_rstrip__doc__,
650 "rstrip($self, chars=None, /)\n"
651 "--\n"
652 "\n"
653 "Return a copy of the string with trailing whitespace removed.\n"
654 "\n"
655 "If chars is given and not None, remove characters in chars instead.");
656
657 #define UNICODE_RSTRIP_METHODDEF \
658 {"rstrip", (PyCFunction)(void(*)(void))unicode_rstrip, METH_FASTCALL, unicode_rstrip__doc__},
659
660 static PyObject *
661 unicode_rstrip_impl(PyObject *self, PyObject *chars);
662
663 static PyObject *
unicode_rstrip(PyObject * self,PyObject * const * args,Py_ssize_t nargs)664 unicode_rstrip(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
665 {
666 PyObject *return_value = NULL;
667 PyObject *chars = Py_None;
668
669 if (!_PyArg_CheckPositional("rstrip", nargs, 0, 1)) {
670 goto exit;
671 }
672 if (nargs < 1) {
673 goto skip_optional;
674 }
675 chars = args[0];
676 skip_optional:
677 return_value = unicode_rstrip_impl(self, chars);
678
679 exit:
680 return return_value;
681 }
682
683 PyDoc_STRVAR(unicode_replace__doc__,
684 "replace($self, old, new, count=-1, /)\n"
685 "--\n"
686 "\n"
687 "Return a copy with all occurrences of substring old replaced by new.\n"
688 "\n"
689 " count\n"
690 " Maximum number of occurrences to replace.\n"
691 " -1 (the default value) means replace all occurrences.\n"
692 "\n"
693 "If the optional argument count is given, only the first count occurrences are\n"
694 "replaced.");
695
696 #define UNICODE_REPLACE_METHODDEF \
697 {"replace", (PyCFunction)(void(*)(void))unicode_replace, METH_FASTCALL, unicode_replace__doc__},
698
699 static PyObject *
700 unicode_replace_impl(PyObject *self, PyObject *old, PyObject *new,
701 Py_ssize_t count);
702
703 static PyObject *
unicode_replace(PyObject * self,PyObject * const * args,Py_ssize_t nargs)704 unicode_replace(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
705 {
706 PyObject *return_value = NULL;
707 PyObject *old;
708 PyObject *new;
709 Py_ssize_t count = -1;
710
711 if (!_PyArg_CheckPositional("replace", nargs, 2, 3)) {
712 goto exit;
713 }
714 if (!PyUnicode_Check(args[0])) {
715 _PyArg_BadArgument("replace", "argument 1", "str", args[0]);
716 goto exit;
717 }
718 if (PyUnicode_READY(args[0]) == -1) {
719 goto exit;
720 }
721 old = args[0];
722 if (!PyUnicode_Check(args[1])) {
723 _PyArg_BadArgument("replace", "argument 2", "str", args[1]);
724 goto exit;
725 }
726 if (PyUnicode_READY(args[1]) == -1) {
727 goto exit;
728 }
729 new = args[1];
730 if (nargs < 3) {
731 goto skip_optional;
732 }
733 if (PyFloat_Check(args[2])) {
734 PyErr_SetString(PyExc_TypeError,
735 "integer argument expected, got float" );
736 goto exit;
737 }
738 {
739 Py_ssize_t ival = -1;
740 PyObject *iobj = PyNumber_Index(args[2]);
741 if (iobj != NULL) {
742 ival = PyLong_AsSsize_t(iobj);
743 Py_DECREF(iobj);
744 }
745 if (ival == -1 && PyErr_Occurred()) {
746 goto exit;
747 }
748 count = ival;
749 }
750 skip_optional:
751 return_value = unicode_replace_impl(self, old, new, count);
752
753 exit:
754 return return_value;
755 }
756
757 PyDoc_STRVAR(unicode_removeprefix__doc__,
758 "removeprefix($self, prefix, /)\n"
759 "--\n"
760 "\n"
761 "Return a str with the given prefix string removed if present.\n"
762 "\n"
763 "If the string starts with the prefix string, return string[len(prefix):].\n"
764 "Otherwise, return a copy of the original string.");
765
766 #define UNICODE_REMOVEPREFIX_METHODDEF \
767 {"removeprefix", (PyCFunction)unicode_removeprefix, METH_O, unicode_removeprefix__doc__},
768
769 static PyObject *
770 unicode_removeprefix_impl(PyObject *self, PyObject *prefix);
771
772 static PyObject *
unicode_removeprefix(PyObject * self,PyObject * arg)773 unicode_removeprefix(PyObject *self, PyObject *arg)
774 {
775 PyObject *return_value = NULL;
776 PyObject *prefix;
777
778 if (!PyUnicode_Check(arg)) {
779 _PyArg_BadArgument("removeprefix", "argument", "str", arg);
780 goto exit;
781 }
782 if (PyUnicode_READY(arg) == -1) {
783 goto exit;
784 }
785 prefix = arg;
786 return_value = unicode_removeprefix_impl(self, prefix);
787
788 exit:
789 return return_value;
790 }
791
792 PyDoc_STRVAR(unicode_removesuffix__doc__,
793 "removesuffix($self, suffix, /)\n"
794 "--\n"
795 "\n"
796 "Return a str with the given suffix string removed if present.\n"
797 "\n"
798 "If the string ends with the suffix string and that suffix is not empty,\n"
799 "return string[:-len(suffix)]. Otherwise, return a copy of the original\n"
800 "string.");
801
802 #define UNICODE_REMOVESUFFIX_METHODDEF \
803 {"removesuffix", (PyCFunction)unicode_removesuffix, METH_O, unicode_removesuffix__doc__},
804
805 static PyObject *
806 unicode_removesuffix_impl(PyObject *self, PyObject *suffix);
807
808 static PyObject *
unicode_removesuffix(PyObject * self,PyObject * arg)809 unicode_removesuffix(PyObject *self, PyObject *arg)
810 {
811 PyObject *return_value = NULL;
812 PyObject *suffix;
813
814 if (!PyUnicode_Check(arg)) {
815 _PyArg_BadArgument("removesuffix", "argument", "str", arg);
816 goto exit;
817 }
818 if (PyUnicode_READY(arg) == -1) {
819 goto exit;
820 }
821 suffix = arg;
822 return_value = unicode_removesuffix_impl(self, suffix);
823
824 exit:
825 return return_value;
826 }
827
828 PyDoc_STRVAR(unicode_rjust__doc__,
829 "rjust($self, width, fillchar=\' \', /)\n"
830 "--\n"
831 "\n"
832 "Return a right-justified string of length width.\n"
833 "\n"
834 "Padding is done using the specified fill character (default is a space).");
835
836 #define UNICODE_RJUST_METHODDEF \
837 {"rjust", (PyCFunction)(void(*)(void))unicode_rjust, METH_FASTCALL, unicode_rjust__doc__},
838
839 static PyObject *
840 unicode_rjust_impl(PyObject *self, Py_ssize_t width, Py_UCS4 fillchar);
841
842 static PyObject *
unicode_rjust(PyObject * self,PyObject * const * args,Py_ssize_t nargs)843 unicode_rjust(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
844 {
845 PyObject *return_value = NULL;
846 Py_ssize_t width;
847 Py_UCS4 fillchar = ' ';
848
849 if (!_PyArg_CheckPositional("rjust", nargs, 1, 2)) {
850 goto exit;
851 }
852 if (PyFloat_Check(args[0])) {
853 PyErr_SetString(PyExc_TypeError,
854 "integer argument expected, got float" );
855 goto exit;
856 }
857 {
858 Py_ssize_t ival = -1;
859 PyObject *iobj = PyNumber_Index(args[0]);
860 if (iobj != NULL) {
861 ival = PyLong_AsSsize_t(iobj);
862 Py_DECREF(iobj);
863 }
864 if (ival == -1 && PyErr_Occurred()) {
865 goto exit;
866 }
867 width = ival;
868 }
869 if (nargs < 2) {
870 goto skip_optional;
871 }
872 if (!convert_uc(args[1], &fillchar)) {
873 goto exit;
874 }
875 skip_optional:
876 return_value = unicode_rjust_impl(self, width, fillchar);
877
878 exit:
879 return return_value;
880 }
881
882 PyDoc_STRVAR(unicode_split__doc__,
883 "split($self, /, sep=None, maxsplit=-1)\n"
884 "--\n"
885 "\n"
886 "Return a list of the words in the string, using sep as the delimiter string.\n"
887 "\n"
888 " sep\n"
889 " The delimiter according which to split the string.\n"
890 " None (the default value) means split according to any whitespace,\n"
891 " and discard empty strings from the result.\n"
892 " maxsplit\n"
893 " Maximum number of splits to do.\n"
894 " -1 (the default value) means no limit.");
895
896 #define UNICODE_SPLIT_METHODDEF \
897 {"split", (PyCFunction)(void(*)(void))unicode_split, METH_FASTCALL|METH_KEYWORDS, unicode_split__doc__},
898
899 static PyObject *
900 unicode_split_impl(PyObject *self, PyObject *sep, Py_ssize_t maxsplit);
901
902 static PyObject *
unicode_split(PyObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)903 unicode_split(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
904 {
905 PyObject *return_value = NULL;
906 static const char * const _keywords[] = {"sep", "maxsplit", NULL};
907 static _PyArg_Parser _parser = {NULL, _keywords, "split", 0};
908 PyObject *argsbuf[2];
909 Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
910 PyObject *sep = Py_None;
911 Py_ssize_t maxsplit = -1;
912
913 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
914 if (!args) {
915 goto exit;
916 }
917 if (!noptargs) {
918 goto skip_optional_pos;
919 }
920 if (args[0]) {
921 sep = args[0];
922 if (!--noptargs) {
923 goto skip_optional_pos;
924 }
925 }
926 if (PyFloat_Check(args[1])) {
927 PyErr_SetString(PyExc_TypeError,
928 "integer argument expected, got float" );
929 goto exit;
930 }
931 {
932 Py_ssize_t ival = -1;
933 PyObject *iobj = PyNumber_Index(args[1]);
934 if (iobj != NULL) {
935 ival = PyLong_AsSsize_t(iobj);
936 Py_DECREF(iobj);
937 }
938 if (ival == -1 && PyErr_Occurred()) {
939 goto exit;
940 }
941 maxsplit = ival;
942 }
943 skip_optional_pos:
944 return_value = unicode_split_impl(self, sep, maxsplit);
945
946 exit:
947 return return_value;
948 }
949
950 PyDoc_STRVAR(unicode_partition__doc__,
951 "partition($self, sep, /)\n"
952 "--\n"
953 "\n"
954 "Partition the string into three parts using the given separator.\n"
955 "\n"
956 "This will search for the separator in the string. If the separator is found,\n"
957 "returns a 3-tuple containing the part before the separator, the separator\n"
958 "itself, and the part after it.\n"
959 "\n"
960 "If the separator is not found, returns a 3-tuple containing the original string\n"
961 "and two empty strings.");
962
963 #define UNICODE_PARTITION_METHODDEF \
964 {"partition", (PyCFunction)unicode_partition, METH_O, unicode_partition__doc__},
965
966 PyDoc_STRVAR(unicode_rpartition__doc__,
967 "rpartition($self, sep, /)\n"
968 "--\n"
969 "\n"
970 "Partition the string into three parts using the given separator.\n"
971 "\n"
972 "This will search for the separator in the string, starting at the end. If\n"
973 "the separator is found, returns a 3-tuple containing the part before the\n"
974 "separator, the separator itself, and the part after it.\n"
975 "\n"
976 "If the separator is not found, returns a 3-tuple containing two empty strings\n"
977 "and the original string.");
978
979 #define UNICODE_RPARTITION_METHODDEF \
980 {"rpartition", (PyCFunction)unicode_rpartition, METH_O, unicode_rpartition__doc__},
981
982 PyDoc_STRVAR(unicode_rsplit__doc__,
983 "rsplit($self, /, sep=None, maxsplit=-1)\n"
984 "--\n"
985 "\n"
986 "Return a list of the words in the string, using sep as the delimiter string.\n"
987 "\n"
988 " sep\n"
989 " The delimiter according which to split the string.\n"
990 " None (the default value) means split according to any whitespace,\n"
991 " and discard empty strings from the result.\n"
992 " maxsplit\n"
993 " Maximum number of splits to do.\n"
994 " -1 (the default value) means no limit.\n"
995 "\n"
996 "Splits are done starting at the end of the string and working to the front.");
997
998 #define UNICODE_RSPLIT_METHODDEF \
999 {"rsplit", (PyCFunction)(void(*)(void))unicode_rsplit, METH_FASTCALL|METH_KEYWORDS, unicode_rsplit__doc__},
1000
1001 static PyObject *
1002 unicode_rsplit_impl(PyObject *self, PyObject *sep, Py_ssize_t maxsplit);
1003
1004 static PyObject *
unicode_rsplit(PyObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)1005 unicode_rsplit(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
1006 {
1007 PyObject *return_value = NULL;
1008 static const char * const _keywords[] = {"sep", "maxsplit", NULL};
1009 static _PyArg_Parser _parser = {NULL, _keywords, "rsplit", 0};
1010 PyObject *argsbuf[2];
1011 Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
1012 PyObject *sep = Py_None;
1013 Py_ssize_t maxsplit = -1;
1014
1015 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
1016 if (!args) {
1017 goto exit;
1018 }
1019 if (!noptargs) {
1020 goto skip_optional_pos;
1021 }
1022 if (args[0]) {
1023 sep = args[0];
1024 if (!--noptargs) {
1025 goto skip_optional_pos;
1026 }
1027 }
1028 if (PyFloat_Check(args[1])) {
1029 PyErr_SetString(PyExc_TypeError,
1030 "integer argument expected, got float" );
1031 goto exit;
1032 }
1033 {
1034 Py_ssize_t ival = -1;
1035 PyObject *iobj = PyNumber_Index(args[1]);
1036 if (iobj != NULL) {
1037 ival = PyLong_AsSsize_t(iobj);
1038 Py_DECREF(iobj);
1039 }
1040 if (ival == -1 && PyErr_Occurred()) {
1041 goto exit;
1042 }
1043 maxsplit = ival;
1044 }
1045 skip_optional_pos:
1046 return_value = unicode_rsplit_impl(self, sep, maxsplit);
1047
1048 exit:
1049 return return_value;
1050 }
1051
1052 PyDoc_STRVAR(unicode_splitlines__doc__,
1053 "splitlines($self, /, keepends=False)\n"
1054 "--\n"
1055 "\n"
1056 "Return a list of the lines in the string, breaking at line boundaries.\n"
1057 "\n"
1058 "Line breaks are not included in the resulting list unless keepends is given and\n"
1059 "true.");
1060
1061 #define UNICODE_SPLITLINES_METHODDEF \
1062 {"splitlines", (PyCFunction)(void(*)(void))unicode_splitlines, METH_FASTCALL|METH_KEYWORDS, unicode_splitlines__doc__},
1063
1064 static PyObject *
1065 unicode_splitlines_impl(PyObject *self, int keepends);
1066
1067 static PyObject *
unicode_splitlines(PyObject * self,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)1068 unicode_splitlines(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
1069 {
1070 PyObject *return_value = NULL;
1071 static const char * const _keywords[] = {"keepends", NULL};
1072 static _PyArg_Parser _parser = {NULL, _keywords, "splitlines", 0};
1073 PyObject *argsbuf[1];
1074 Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
1075 int keepends = 0;
1076
1077 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
1078 if (!args) {
1079 goto exit;
1080 }
1081 if (!noptargs) {
1082 goto skip_optional_pos;
1083 }
1084 if (PyFloat_Check(args[0])) {
1085 PyErr_SetString(PyExc_TypeError,
1086 "integer argument expected, got float" );
1087 goto exit;
1088 }
1089 keepends = _PyLong_AsInt(args[0]);
1090 if (keepends == -1 && PyErr_Occurred()) {
1091 goto exit;
1092 }
1093 skip_optional_pos:
1094 return_value = unicode_splitlines_impl(self, keepends);
1095
1096 exit:
1097 return return_value;
1098 }
1099
1100 PyDoc_STRVAR(unicode_swapcase__doc__,
1101 "swapcase($self, /)\n"
1102 "--\n"
1103 "\n"
1104 "Convert uppercase characters to lowercase and lowercase characters to uppercase.");
1105
1106 #define UNICODE_SWAPCASE_METHODDEF \
1107 {"swapcase", (PyCFunction)unicode_swapcase, METH_NOARGS, unicode_swapcase__doc__},
1108
1109 static PyObject *
1110 unicode_swapcase_impl(PyObject *self);
1111
1112 static PyObject *
unicode_swapcase(PyObject * self,PyObject * Py_UNUSED (ignored))1113 unicode_swapcase(PyObject *self, PyObject *Py_UNUSED(ignored))
1114 {
1115 return unicode_swapcase_impl(self);
1116 }
1117
1118 PyDoc_STRVAR(unicode_maketrans__doc__,
1119 "maketrans(x, y=<unrepresentable>, z=<unrepresentable>, /)\n"
1120 "--\n"
1121 "\n"
1122 "Return a translation table usable for str.translate().\n"
1123 "\n"
1124 "If there is only one argument, it must be a dictionary mapping Unicode\n"
1125 "ordinals (integers) or characters to Unicode ordinals, strings or None.\n"
1126 "Character keys will be then converted to ordinals.\n"
1127 "If there are two arguments, they must be strings of equal length, and\n"
1128 "in the resulting dictionary, each character in x will be mapped to the\n"
1129 "character at the same position in y. If there is a third argument, it\n"
1130 "must be a string, whose characters will be mapped to None in the result.");
1131
1132 #define UNICODE_MAKETRANS_METHODDEF \
1133 {"maketrans", (PyCFunction)(void(*)(void))unicode_maketrans, METH_FASTCALL|METH_STATIC, unicode_maketrans__doc__},
1134
1135 static PyObject *
1136 unicode_maketrans_impl(PyObject *x, PyObject *y, PyObject *z);
1137
1138 static PyObject *
unicode_maketrans(void * null,PyObject * const * args,Py_ssize_t nargs)1139 unicode_maketrans(void *null, PyObject *const *args, Py_ssize_t nargs)
1140 {
1141 PyObject *return_value = NULL;
1142 PyObject *x;
1143 PyObject *y = NULL;
1144 PyObject *z = NULL;
1145
1146 if (!_PyArg_CheckPositional("maketrans", nargs, 1, 3)) {
1147 goto exit;
1148 }
1149 x = args[0];
1150 if (nargs < 2) {
1151 goto skip_optional;
1152 }
1153 if (!PyUnicode_Check(args[1])) {
1154 _PyArg_BadArgument("maketrans", "argument 2", "str", args[1]);
1155 goto exit;
1156 }
1157 if (PyUnicode_READY(args[1]) == -1) {
1158 goto exit;
1159 }
1160 y = args[1];
1161 if (nargs < 3) {
1162 goto skip_optional;
1163 }
1164 if (!PyUnicode_Check(args[2])) {
1165 _PyArg_BadArgument("maketrans", "argument 3", "str", args[2]);
1166 goto exit;
1167 }
1168 if (PyUnicode_READY(args[2]) == -1) {
1169 goto exit;
1170 }
1171 z = args[2];
1172 skip_optional:
1173 return_value = unicode_maketrans_impl(x, y, z);
1174
1175 exit:
1176 return return_value;
1177 }
1178
1179 PyDoc_STRVAR(unicode_translate__doc__,
1180 "translate($self, table, /)\n"
1181 "--\n"
1182 "\n"
1183 "Replace each character in the string using the given translation table.\n"
1184 "\n"
1185 " table\n"
1186 " Translation table, which must be a mapping of Unicode ordinals to\n"
1187 " Unicode ordinals, strings, or None.\n"
1188 "\n"
1189 "The table must implement lookup/indexing via __getitem__, for instance a\n"
1190 "dictionary or list. If this operation raises LookupError, the character is\n"
1191 "left untouched. Characters mapped to None are deleted.");
1192
1193 #define UNICODE_TRANSLATE_METHODDEF \
1194 {"translate", (PyCFunction)unicode_translate, METH_O, unicode_translate__doc__},
1195
1196 PyDoc_STRVAR(unicode_upper__doc__,
1197 "upper($self, /)\n"
1198 "--\n"
1199 "\n"
1200 "Return a copy of the string converted to uppercase.");
1201
1202 #define UNICODE_UPPER_METHODDEF \
1203 {"upper", (PyCFunction)unicode_upper, METH_NOARGS, unicode_upper__doc__},
1204
1205 static PyObject *
1206 unicode_upper_impl(PyObject *self);
1207
1208 static PyObject *
unicode_upper(PyObject * self,PyObject * Py_UNUSED (ignored))1209 unicode_upper(PyObject *self, PyObject *Py_UNUSED(ignored))
1210 {
1211 return unicode_upper_impl(self);
1212 }
1213
1214 PyDoc_STRVAR(unicode_zfill__doc__,
1215 "zfill($self, width, /)\n"
1216 "--\n"
1217 "\n"
1218 "Pad a numeric string with zeros on the left, to fill a field of the given width.\n"
1219 "\n"
1220 "The string is never truncated.");
1221
1222 #define UNICODE_ZFILL_METHODDEF \
1223 {"zfill", (PyCFunction)unicode_zfill, METH_O, unicode_zfill__doc__},
1224
1225 static PyObject *
1226 unicode_zfill_impl(PyObject *self, Py_ssize_t width);
1227
1228 static PyObject *
unicode_zfill(PyObject * self,PyObject * arg)1229 unicode_zfill(PyObject *self, PyObject *arg)
1230 {
1231 PyObject *return_value = NULL;
1232 Py_ssize_t width;
1233
1234 if (PyFloat_Check(arg)) {
1235 PyErr_SetString(PyExc_TypeError,
1236 "integer argument expected, got float" );
1237 goto exit;
1238 }
1239 {
1240 Py_ssize_t ival = -1;
1241 PyObject *iobj = PyNumber_Index(arg);
1242 if (iobj != NULL) {
1243 ival = PyLong_AsSsize_t(iobj);
1244 Py_DECREF(iobj);
1245 }
1246 if (ival == -1 && PyErr_Occurred()) {
1247 goto exit;
1248 }
1249 width = ival;
1250 }
1251 return_value = unicode_zfill_impl(self, width);
1252
1253 exit:
1254 return return_value;
1255 }
1256
1257 PyDoc_STRVAR(unicode___format____doc__,
1258 "__format__($self, format_spec, /)\n"
1259 "--\n"
1260 "\n"
1261 "Return a formatted version of the string as described by format_spec.");
1262
1263 #define UNICODE___FORMAT___METHODDEF \
1264 {"__format__", (PyCFunction)unicode___format__, METH_O, unicode___format____doc__},
1265
1266 static PyObject *
1267 unicode___format___impl(PyObject *self, PyObject *format_spec);
1268
1269 static PyObject *
unicode___format__(PyObject * self,PyObject * arg)1270 unicode___format__(PyObject *self, PyObject *arg)
1271 {
1272 PyObject *return_value = NULL;
1273 PyObject *format_spec;
1274
1275 if (!PyUnicode_Check(arg)) {
1276 _PyArg_BadArgument("__format__", "argument", "str", arg);
1277 goto exit;
1278 }
1279 if (PyUnicode_READY(arg) == -1) {
1280 goto exit;
1281 }
1282 format_spec = arg;
1283 return_value = unicode___format___impl(self, format_spec);
1284
1285 exit:
1286 return return_value;
1287 }
1288
1289 PyDoc_STRVAR(unicode_sizeof__doc__,
1290 "__sizeof__($self, /)\n"
1291 "--\n"
1292 "\n"
1293 "Return the size of the string in memory, in bytes.");
1294
1295 #define UNICODE_SIZEOF_METHODDEF \
1296 {"__sizeof__", (PyCFunction)unicode_sizeof, METH_NOARGS, unicode_sizeof__doc__},
1297
1298 static PyObject *
1299 unicode_sizeof_impl(PyObject *self);
1300
1301 static PyObject *
unicode_sizeof(PyObject * self,PyObject * Py_UNUSED (ignored))1302 unicode_sizeof(PyObject *self, PyObject *Py_UNUSED(ignored))
1303 {
1304 return unicode_sizeof_impl(self);
1305 }
1306 /*[clinic end generated code: output=b91233f3722643be input=a9049054013a1b77]*/
1307