diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2014-09-15 11:50:44 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2014-09-15 11:50:44 (GMT) |
commit | 8fad1676a215bab3e61dccf0f1802ccb17a43a41 (patch) | |
tree | 8a372bcba4c55571779e527d4c202bc2ab04ea0b /Modules | |
parent | b85a97600a45bf235fd8b541ebab358f6a8aa5dd (diff) | |
download | cpython-8fad1676a215bab3e61dccf0f1802ccb17a43a41.zip cpython-8fad1676a215bab3e61dccf0f1802ccb17a43a41.tar.gz cpython-8fad1676a215bab3e61dccf0f1802ccb17a43a41.tar.bz2 |
Issue #22166: clear codec caches in test_codecs
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_codecsmodule.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Modules/_codecsmodule.c b/Modules/_codecsmodule.c index 0b093ab..11d3768 100644 --- a/Modules/_codecsmodule.c +++ b/Modules/_codecsmodule.c @@ -42,6 +42,12 @@ Copyright (c) Corporation for National Research Initiatives. #include <windows.h> #endif +/*[clinic input] +module _codecs +[clinic start generated code]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=e1390e3da3cb9deb]*/ + + /* --- Registry ----------------------------------------------------------- */ PyDoc_STRVAR(register__doc__, @@ -134,6 +140,53 @@ codec_decode(PyObject *self, PyObject *args) /* --- Helpers ------------------------------------------------------------ */ +/*[clinic input] +_codecs._forget_codec + + encoding: str + / + +Purge the named codec from the internal codec lookup cache +[clinic start generated code]*/ + +PyDoc_STRVAR(_codecs__forget_codec__doc__, +"_forget_codec($module, encoding, /)\n" +"--\n" +"\n" +"Purge the named codec from the internal codec lookup cache"); + +#define _CODECS__FORGET_CODEC_METHODDEF \ + {"_forget_codec", (PyCFunction)_codecs__forget_codec, METH_VARARGS, _codecs__forget_codec__doc__}, + +static PyObject * +_codecs__forget_codec_impl(PyModuleDef *module, const char *encoding); + +static PyObject * +_codecs__forget_codec(PyModuleDef *module, PyObject *args) +{ + PyObject *return_value = NULL; + const char *encoding; + + if (!PyArg_ParseTuple(args, + "s:_forget_codec", + &encoding)) + goto exit; + return_value = _codecs__forget_codec_impl(module, encoding); + +exit: + return return_value; +} + +static PyObject * +_codecs__forget_codec_impl(PyModuleDef *module, const char *encoding) +/*[clinic end generated code: output=a75e631591702a5c input=18d5d92d0e386c38]*/ +{ + if (_PyCodec_Forget(encoding) < 0) { + return NULL; + }; + Py_RETURN_NONE; +} + static PyObject *codec_tuple(PyObject *unicode, Py_ssize_t len) @@ -1168,6 +1221,7 @@ static PyMethodDef _codecs_functions[] = { register_error__doc__}, {"lookup_error", lookup_error, METH_VARARGS, lookup_error__doc__}, + _CODECS__FORGET_CODEC_METHODDEF {NULL, NULL} /* sentinel */ }; |