summaryrefslogtreecommitdiffstats
path: root/Objects/clinic/bytearrayobject.c.h
diff options
context:
space:
mode:
authorsweeneyde <36520290+sweeneyde@users.noreply.github.com>2020-04-22 21:05:48 (GMT)
committerGitHub <noreply@github.com>2020-04-22 21:05:48 (GMT)
commita81849b0315277bb3937271174aaaa5059c0b445 (patch)
tree8184e6ab012aa217b5cc1bb242efc6aed531db7d /Objects/clinic/bytearrayobject.c.h
parent39652cd8bdf7c82b7c6055089a4ed90ee546a448 (diff)
downloadcpython-a81849b0315277bb3937271174aaaa5059c0b445.zip
cpython-a81849b0315277bb3937271174aaaa5059c0b445.tar.gz
cpython-a81849b0315277bb3937271174aaaa5059c0b445.tar.bz2
bpo-39939: Add str.removeprefix and str.removesuffix (GH-18939)
Added str.removeprefix and str.removesuffix methods and corresponding bytes, bytearray, and collections.UserString methods to remove affixes from a string if present. See PEP 616 for a full description.
Diffstat (limited to 'Objects/clinic/bytearrayobject.c.h')
-rw-r--r--Objects/clinic/bytearrayobject.c.h82
1 files changed, 81 insertions, 1 deletions
diff --git a/Objects/clinic/bytearrayobject.c.h b/Objects/clinic/bytearrayobject.c.h
index 0557707..35ba1ff 100644
--- a/Objects/clinic/bytearrayobject.c.h
+++ b/Objects/clinic/bytearrayobject.c.h
@@ -38,6 +38,86 @@ bytearray_copy(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
return bytearray_copy_impl(self);
}
+PyDoc_STRVAR(bytearray_removeprefix__doc__,
+"removeprefix($self, prefix, /)\n"
+"--\n"
+"\n"
+"Return a bytearray with the given prefix string removed if present.\n"
+"\n"
+"If the bytearray starts with the prefix string, return\n"
+"bytearray[len(prefix):]. Otherwise, return a copy of the original\n"
+"bytearray.");
+
+#define BYTEARRAY_REMOVEPREFIX_METHODDEF \
+ {"removeprefix", (PyCFunction)bytearray_removeprefix, METH_O, bytearray_removeprefix__doc__},
+
+static PyObject *
+bytearray_removeprefix_impl(PyByteArrayObject *self, Py_buffer *prefix);
+
+static PyObject *
+bytearray_removeprefix(PyByteArrayObject *self, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ Py_buffer prefix = {NULL, NULL};
+
+ if (PyObject_GetBuffer(arg, &prefix, PyBUF_SIMPLE) != 0) {
+ goto exit;
+ }
+ if (!PyBuffer_IsContiguous(&prefix, 'C')) {
+ _PyArg_BadArgument("removeprefix", "argument", "contiguous buffer", arg);
+ goto exit;
+ }
+ return_value = bytearray_removeprefix_impl(self, &prefix);
+
+exit:
+ /* Cleanup for prefix */
+ if (prefix.obj) {
+ PyBuffer_Release(&prefix);
+ }
+
+ return return_value;
+}
+
+PyDoc_STRVAR(bytearray_removesuffix__doc__,
+"removesuffix($self, suffix, /)\n"
+"--\n"
+"\n"
+"Return a bytearray with the given suffix string removed if present.\n"
+"\n"
+"If the bytearray ends with the suffix string and that suffix is not\n"
+"empty, return bytearray[:-len(suffix)]. Otherwise, return a copy of\n"
+"the original bytearray.");
+
+#define BYTEARRAY_REMOVESUFFIX_METHODDEF \
+ {"removesuffix", (PyCFunction)bytearray_removesuffix, METH_O, bytearray_removesuffix__doc__},
+
+static PyObject *
+bytearray_removesuffix_impl(PyByteArrayObject *self, Py_buffer *suffix);
+
+static PyObject *
+bytearray_removesuffix(PyByteArrayObject *self, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ Py_buffer suffix = {NULL, NULL};
+
+ if (PyObject_GetBuffer(arg, &suffix, PyBUF_SIMPLE) != 0) {
+ goto exit;
+ }
+ if (!PyBuffer_IsContiguous(&suffix, 'C')) {
+ _PyArg_BadArgument("removesuffix", "argument", "contiguous buffer", arg);
+ goto exit;
+ }
+ return_value = bytearray_removesuffix_impl(self, &suffix);
+
+exit:
+ /* Cleanup for suffix */
+ if (suffix.obj) {
+ PyBuffer_Release(&suffix);
+ }
+
+ return return_value;
+}
+
PyDoc_STRVAR(bytearray_translate__doc__,
"translate($self, table, /, delete=b\'\')\n"
"--\n"
@@ -1011,4 +1091,4 @@ bytearray_sizeof(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
{
return bytearray_sizeof_impl(self);
}
-/*[clinic end generated code: output=508dce79cf2dffcc input=a9049054013a1b77]*/
+/*[clinic end generated code: output=b2919f76709e48dc input=a9049054013a1b77]*/