bpo-39435: Make the first argument of pickle.loads() positional-only. (GH-19846)

It was positional-only de facto: documentation and two implementations
used three different name.
This commit is contained in:
Serhiy Storchaka 2020-05-02 09:38:01 +03:00 committed by GitHub
parent d2baff4301
commit 531d1e5412
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 9 additions and 7 deletions

View File

@ -252,7 +252,7 @@ process more convenient:
.. versionchanged:: 3.8 .. versionchanged:: 3.8
The *buffers* argument was added. The *buffers* argument was added.
.. function:: loads(data, \*, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) .. function:: loads(data, /, \*, fix_imports=True, encoding="ASCII", errors="strict", buffers=None)
Return the reconstituted object hierarchy of the pickled representation Return the reconstituted object hierarchy of the pickled representation
*data* of an object. *data* must be a :term:`bytes-like object`. *data* of an object. *data* must be a :term:`bytes-like object`.

View File

@ -13,7 +13,7 @@ Functions:
dump(object, file) dump(object, file)
dumps(object) -> string dumps(object) -> string
load(file) -> object load(file) -> object
loads(string) -> object loads(bytes) -> object
Misc variables: Misc variables:
@ -1761,7 +1761,7 @@ def _load(file, *, fix_imports=True, encoding="ASCII", errors="strict",
return _Unpickler(file, fix_imports=fix_imports, buffers=buffers, return _Unpickler(file, fix_imports=fix_imports, buffers=buffers,
encoding=encoding, errors=errors).load() encoding=encoding, errors=errors).load()
def _loads(s, *, fix_imports=True, encoding="ASCII", errors="strict", def _loads(s, /, *, fix_imports=True, encoding="ASCII", errors="strict",
buffers=None): buffers=None):
if isinstance(s, str): if isinstance(s, str):
raise TypeError("Can't load pickle from unicode string") raise TypeError("Can't load pickle from unicode string")

View File

@ -0,0 +1 @@
The first argument of :func:`pickle.loads` is now positional-only.

View File

@ -7873,6 +7873,7 @@ _pickle_load_impl(PyObject *module, PyObject *file, int fix_imports,
_pickle.loads _pickle.loads
data: object data: object
/
* *
fix_imports: bool = True fix_imports: bool = True
encoding: str = 'ASCII' encoding: str = 'ASCII'
@ -7899,7 +7900,7 @@ static PyObject *
_pickle_loads_impl(PyObject *module, PyObject *data, int fix_imports, _pickle_loads_impl(PyObject *module, PyObject *data, int fix_imports,
const char *encoding, const char *errors, const char *encoding, const char *errors,
PyObject *buffers) PyObject *buffers)
/*[clinic end generated code: output=82ac1e6b588e6d02 input=9c2ab6a0960185ea]*/ /*[clinic end generated code: output=82ac1e6b588e6d02 input=b3615540d0535087]*/
{ {
PyObject *result; PyObject *result;
UnpicklerObject *unpickler = _Unpickler_New(); UnpicklerObject *unpickler = _Unpickler_New();

View File

@ -735,7 +735,7 @@ exit:
} }
PyDoc_STRVAR(_pickle_loads__doc__, PyDoc_STRVAR(_pickle_loads__doc__,
"loads($module, /, data, *, fix_imports=True, encoding=\'ASCII\',\n" "loads($module, data, /, *, fix_imports=True, encoding=\'ASCII\',\n"
" errors=\'strict\', buffers=())\n" " errors=\'strict\', buffers=())\n"
"--\n" "--\n"
"\n" "\n"
@ -766,7 +766,7 @@ static PyObject *
_pickle_loads(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _pickle_loads(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"data", "fix_imports", "encoding", "errors", "buffers", NULL}; static const char * const _keywords[] = {"", "fix_imports", "encoding", "errors", "buffers", NULL};
static _PyArg_Parser _parser = {NULL, _keywords, "loads", 0}; static _PyArg_Parser _parser = {NULL, _keywords, "loads", 0};
PyObject *argsbuf[5]; PyObject *argsbuf[5];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
@ -836,4 +836,4 @@ skip_optional_kwonly:
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: output=e2506823be1960c5 input=a9049054013a1b77]*/ /*[clinic end generated code: output=324aad69644beda2 input=a9049054013a1b77]*/