17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_Pickler_clear_memo__doc__, 67db96d56Sopenharmony_ci"clear_memo($self, /)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Clears the pickler\'s \"memo\".\n" 107db96d56Sopenharmony_ci"\n" 117db96d56Sopenharmony_ci"The memo is the data structure that remembers which objects the\n" 127db96d56Sopenharmony_ci"pickler has already seen, so that shared or recursive objects are\n" 137db96d56Sopenharmony_ci"pickled by reference and not by value. This method is useful when\n" 147db96d56Sopenharmony_ci"re-using picklers."); 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ci#define _PICKLE_PICKLER_CLEAR_MEMO_METHODDEF \ 177db96d56Sopenharmony_ci {"clear_memo", (PyCFunction)_pickle_Pickler_clear_memo, METH_NOARGS, _pickle_Pickler_clear_memo__doc__}, 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_cistatic PyObject * 207db96d56Sopenharmony_ci_pickle_Pickler_clear_memo_impl(PicklerObject *self); 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_cistatic PyObject * 237db96d56Sopenharmony_ci_pickle_Pickler_clear_memo(PicklerObject *self, PyObject *Py_UNUSED(ignored)) 247db96d56Sopenharmony_ci{ 257db96d56Sopenharmony_ci return _pickle_Pickler_clear_memo_impl(self); 267db96d56Sopenharmony_ci} 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_Pickler_dump__doc__, 297db96d56Sopenharmony_ci"dump($self, obj, /)\n" 307db96d56Sopenharmony_ci"--\n" 317db96d56Sopenharmony_ci"\n" 327db96d56Sopenharmony_ci"Write a pickled representation of the given object to the open file."); 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ci#define _PICKLE_PICKLER_DUMP_METHODDEF \ 357db96d56Sopenharmony_ci {"dump", (PyCFunction)_pickle_Pickler_dump, METH_O, _pickle_Pickler_dump__doc__}, 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_Pickler___sizeof____doc__, 387db96d56Sopenharmony_ci"__sizeof__($self, /)\n" 397db96d56Sopenharmony_ci"--\n" 407db96d56Sopenharmony_ci"\n" 417db96d56Sopenharmony_ci"Returns size in memory, in bytes."); 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci#define _PICKLE_PICKLER___SIZEOF___METHODDEF \ 447db96d56Sopenharmony_ci {"__sizeof__", (PyCFunction)_pickle_Pickler___sizeof__, METH_NOARGS, _pickle_Pickler___sizeof____doc__}, 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_cistatic Py_ssize_t 477db96d56Sopenharmony_ci_pickle_Pickler___sizeof___impl(PicklerObject *self); 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_cistatic PyObject * 507db96d56Sopenharmony_ci_pickle_Pickler___sizeof__(PicklerObject *self, PyObject *Py_UNUSED(ignored)) 517db96d56Sopenharmony_ci{ 527db96d56Sopenharmony_ci PyObject *return_value = NULL; 537db96d56Sopenharmony_ci Py_ssize_t _return_value; 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci _return_value = _pickle_Pickler___sizeof___impl(self); 567db96d56Sopenharmony_ci if ((_return_value == -1) && PyErr_Occurred()) { 577db96d56Sopenharmony_ci goto exit; 587db96d56Sopenharmony_ci } 597db96d56Sopenharmony_ci return_value = PyLong_FromSsize_t(_return_value); 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ciexit: 627db96d56Sopenharmony_ci return return_value; 637db96d56Sopenharmony_ci} 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_Pickler___init____doc__, 667db96d56Sopenharmony_ci"Pickler(file, protocol=None, fix_imports=True, buffer_callback=None)\n" 677db96d56Sopenharmony_ci"--\n" 687db96d56Sopenharmony_ci"\n" 697db96d56Sopenharmony_ci"This takes a binary file for writing a pickle data stream.\n" 707db96d56Sopenharmony_ci"\n" 717db96d56Sopenharmony_ci"The optional *protocol* argument tells the pickler to use the given\n" 727db96d56Sopenharmony_ci"protocol; supported protocols are 0, 1, 2, 3, 4 and 5. The default\n" 737db96d56Sopenharmony_ci"protocol is 4. It was introduced in Python 3.4, and is incompatible\n" 747db96d56Sopenharmony_ci"with previous versions.\n" 757db96d56Sopenharmony_ci"\n" 767db96d56Sopenharmony_ci"Specifying a negative protocol version selects the highest protocol\n" 777db96d56Sopenharmony_ci"version supported. The higher the protocol used, the more recent the\n" 787db96d56Sopenharmony_ci"version of Python needed to read the pickle produced.\n" 797db96d56Sopenharmony_ci"\n" 807db96d56Sopenharmony_ci"The *file* argument must have a write() method that accepts a single\n" 817db96d56Sopenharmony_ci"bytes argument. It can thus be a file object opened for binary\n" 827db96d56Sopenharmony_ci"writing, an io.BytesIO instance, or any other custom object that meets\n" 837db96d56Sopenharmony_ci"this interface.\n" 847db96d56Sopenharmony_ci"\n" 857db96d56Sopenharmony_ci"If *fix_imports* is True and protocol is less than 3, pickle will try\n" 867db96d56Sopenharmony_ci"to map the new Python 3 names to the old module names used in Python\n" 877db96d56Sopenharmony_ci"2, so that the pickle data stream is readable with Python 2.\n" 887db96d56Sopenharmony_ci"\n" 897db96d56Sopenharmony_ci"If *buffer_callback* is None (the default), buffer views are\n" 907db96d56Sopenharmony_ci"serialized into *file* as part of the pickle stream.\n" 917db96d56Sopenharmony_ci"\n" 927db96d56Sopenharmony_ci"If *buffer_callback* is not None, then it can be called any number\n" 937db96d56Sopenharmony_ci"of times with a buffer view. If the callback returns a false value\n" 947db96d56Sopenharmony_ci"(such as None), the given buffer is out-of-band; otherwise the\n" 957db96d56Sopenharmony_ci"buffer is serialized in-band, i.e. inside the pickle stream.\n" 967db96d56Sopenharmony_ci"\n" 977db96d56Sopenharmony_ci"It is an error if *buffer_callback* is not None and *protocol*\n" 987db96d56Sopenharmony_ci"is None or smaller than 5."); 997db96d56Sopenharmony_ci 1007db96d56Sopenharmony_cistatic int 1017db96d56Sopenharmony_ci_pickle_Pickler___init___impl(PicklerObject *self, PyObject *file, 1027db96d56Sopenharmony_ci PyObject *protocol, int fix_imports, 1037db96d56Sopenharmony_ci PyObject *buffer_callback); 1047db96d56Sopenharmony_ci 1057db96d56Sopenharmony_cistatic int 1067db96d56Sopenharmony_ci_pickle_Pickler___init__(PyObject *self, PyObject *args, PyObject *kwargs) 1077db96d56Sopenharmony_ci{ 1087db96d56Sopenharmony_ci int return_value = -1; 1097db96d56Sopenharmony_ci static const char * const _keywords[] = {"file", "protocol", "fix_imports", "buffer_callback", NULL}; 1107db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "Pickler", 0}; 1117db96d56Sopenharmony_ci PyObject *argsbuf[4]; 1127db96d56Sopenharmony_ci PyObject * const *fastargs; 1137db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 1147db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1; 1157db96d56Sopenharmony_ci PyObject *file; 1167db96d56Sopenharmony_ci PyObject *protocol = Py_None; 1177db96d56Sopenharmony_ci int fix_imports = 1; 1187db96d56Sopenharmony_ci PyObject *buffer_callback = Py_None; 1197db96d56Sopenharmony_ci 1207db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 4, 0, argsbuf); 1217db96d56Sopenharmony_ci if (!fastargs) { 1227db96d56Sopenharmony_ci goto exit; 1237db96d56Sopenharmony_ci } 1247db96d56Sopenharmony_ci file = fastargs[0]; 1257db96d56Sopenharmony_ci if (!noptargs) { 1267db96d56Sopenharmony_ci goto skip_optional_pos; 1277db96d56Sopenharmony_ci } 1287db96d56Sopenharmony_ci if (fastargs[1]) { 1297db96d56Sopenharmony_ci protocol = fastargs[1]; 1307db96d56Sopenharmony_ci if (!--noptargs) { 1317db96d56Sopenharmony_ci goto skip_optional_pos; 1327db96d56Sopenharmony_ci } 1337db96d56Sopenharmony_ci } 1347db96d56Sopenharmony_ci if (fastargs[2]) { 1357db96d56Sopenharmony_ci fix_imports = PyObject_IsTrue(fastargs[2]); 1367db96d56Sopenharmony_ci if (fix_imports < 0) { 1377db96d56Sopenharmony_ci goto exit; 1387db96d56Sopenharmony_ci } 1397db96d56Sopenharmony_ci if (!--noptargs) { 1407db96d56Sopenharmony_ci goto skip_optional_pos; 1417db96d56Sopenharmony_ci } 1427db96d56Sopenharmony_ci } 1437db96d56Sopenharmony_ci buffer_callback = fastargs[3]; 1447db96d56Sopenharmony_ciskip_optional_pos: 1457db96d56Sopenharmony_ci return_value = _pickle_Pickler___init___impl((PicklerObject *)self, file, protocol, fix_imports, buffer_callback); 1467db96d56Sopenharmony_ci 1477db96d56Sopenharmony_ciexit: 1487db96d56Sopenharmony_ci return return_value; 1497db96d56Sopenharmony_ci} 1507db96d56Sopenharmony_ci 1517db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_PicklerMemoProxy_clear__doc__, 1527db96d56Sopenharmony_ci"clear($self, /)\n" 1537db96d56Sopenharmony_ci"--\n" 1547db96d56Sopenharmony_ci"\n" 1557db96d56Sopenharmony_ci"Remove all items from memo."); 1567db96d56Sopenharmony_ci 1577db96d56Sopenharmony_ci#define _PICKLE_PICKLERMEMOPROXY_CLEAR_METHODDEF \ 1587db96d56Sopenharmony_ci {"clear", (PyCFunction)_pickle_PicklerMemoProxy_clear, METH_NOARGS, _pickle_PicklerMemoProxy_clear__doc__}, 1597db96d56Sopenharmony_ci 1607db96d56Sopenharmony_cistatic PyObject * 1617db96d56Sopenharmony_ci_pickle_PicklerMemoProxy_clear_impl(PicklerMemoProxyObject *self); 1627db96d56Sopenharmony_ci 1637db96d56Sopenharmony_cistatic PyObject * 1647db96d56Sopenharmony_ci_pickle_PicklerMemoProxy_clear(PicklerMemoProxyObject *self, PyObject *Py_UNUSED(ignored)) 1657db96d56Sopenharmony_ci{ 1667db96d56Sopenharmony_ci return _pickle_PicklerMemoProxy_clear_impl(self); 1677db96d56Sopenharmony_ci} 1687db96d56Sopenharmony_ci 1697db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_PicklerMemoProxy_copy__doc__, 1707db96d56Sopenharmony_ci"copy($self, /)\n" 1717db96d56Sopenharmony_ci"--\n" 1727db96d56Sopenharmony_ci"\n" 1737db96d56Sopenharmony_ci"Copy the memo to a new object."); 1747db96d56Sopenharmony_ci 1757db96d56Sopenharmony_ci#define _PICKLE_PICKLERMEMOPROXY_COPY_METHODDEF \ 1767db96d56Sopenharmony_ci {"copy", (PyCFunction)_pickle_PicklerMemoProxy_copy, METH_NOARGS, _pickle_PicklerMemoProxy_copy__doc__}, 1777db96d56Sopenharmony_ci 1787db96d56Sopenharmony_cistatic PyObject * 1797db96d56Sopenharmony_ci_pickle_PicklerMemoProxy_copy_impl(PicklerMemoProxyObject *self); 1807db96d56Sopenharmony_ci 1817db96d56Sopenharmony_cistatic PyObject * 1827db96d56Sopenharmony_ci_pickle_PicklerMemoProxy_copy(PicklerMemoProxyObject *self, PyObject *Py_UNUSED(ignored)) 1837db96d56Sopenharmony_ci{ 1847db96d56Sopenharmony_ci return _pickle_PicklerMemoProxy_copy_impl(self); 1857db96d56Sopenharmony_ci} 1867db96d56Sopenharmony_ci 1877db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_PicklerMemoProxy___reduce____doc__, 1887db96d56Sopenharmony_ci"__reduce__($self, /)\n" 1897db96d56Sopenharmony_ci"--\n" 1907db96d56Sopenharmony_ci"\n" 1917db96d56Sopenharmony_ci"Implement pickle support."); 1927db96d56Sopenharmony_ci 1937db96d56Sopenharmony_ci#define _PICKLE_PICKLERMEMOPROXY___REDUCE___METHODDEF \ 1947db96d56Sopenharmony_ci {"__reduce__", (PyCFunction)_pickle_PicklerMemoProxy___reduce__, METH_NOARGS, _pickle_PicklerMemoProxy___reduce____doc__}, 1957db96d56Sopenharmony_ci 1967db96d56Sopenharmony_cistatic PyObject * 1977db96d56Sopenharmony_ci_pickle_PicklerMemoProxy___reduce___impl(PicklerMemoProxyObject *self); 1987db96d56Sopenharmony_ci 1997db96d56Sopenharmony_cistatic PyObject * 2007db96d56Sopenharmony_ci_pickle_PicklerMemoProxy___reduce__(PicklerMemoProxyObject *self, PyObject *Py_UNUSED(ignored)) 2017db96d56Sopenharmony_ci{ 2027db96d56Sopenharmony_ci return _pickle_PicklerMemoProxy___reduce___impl(self); 2037db96d56Sopenharmony_ci} 2047db96d56Sopenharmony_ci 2057db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_Unpickler_load__doc__, 2067db96d56Sopenharmony_ci"load($self, /)\n" 2077db96d56Sopenharmony_ci"--\n" 2087db96d56Sopenharmony_ci"\n" 2097db96d56Sopenharmony_ci"Load a pickle.\n" 2107db96d56Sopenharmony_ci"\n" 2117db96d56Sopenharmony_ci"Read a pickled object representation from the open file object given\n" 2127db96d56Sopenharmony_ci"in the constructor, and return the reconstituted object hierarchy\n" 2137db96d56Sopenharmony_ci"specified therein."); 2147db96d56Sopenharmony_ci 2157db96d56Sopenharmony_ci#define _PICKLE_UNPICKLER_LOAD_METHODDEF \ 2167db96d56Sopenharmony_ci {"load", (PyCFunction)_pickle_Unpickler_load, METH_NOARGS, _pickle_Unpickler_load__doc__}, 2177db96d56Sopenharmony_ci 2187db96d56Sopenharmony_cistatic PyObject * 2197db96d56Sopenharmony_ci_pickle_Unpickler_load_impl(UnpicklerObject *self); 2207db96d56Sopenharmony_ci 2217db96d56Sopenharmony_cistatic PyObject * 2227db96d56Sopenharmony_ci_pickle_Unpickler_load(UnpicklerObject *self, PyObject *Py_UNUSED(ignored)) 2237db96d56Sopenharmony_ci{ 2247db96d56Sopenharmony_ci return _pickle_Unpickler_load_impl(self); 2257db96d56Sopenharmony_ci} 2267db96d56Sopenharmony_ci 2277db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_Unpickler_find_class__doc__, 2287db96d56Sopenharmony_ci"find_class($self, module_name, global_name, /)\n" 2297db96d56Sopenharmony_ci"--\n" 2307db96d56Sopenharmony_ci"\n" 2317db96d56Sopenharmony_ci"Return an object from a specified module.\n" 2327db96d56Sopenharmony_ci"\n" 2337db96d56Sopenharmony_ci"If necessary, the module will be imported. Subclasses may override\n" 2347db96d56Sopenharmony_ci"this method (e.g. to restrict unpickling of arbitrary classes and\n" 2357db96d56Sopenharmony_ci"functions).\n" 2367db96d56Sopenharmony_ci"\n" 2377db96d56Sopenharmony_ci"This method is called whenever a class or a function object is\n" 2387db96d56Sopenharmony_ci"needed. Both arguments passed are str objects."); 2397db96d56Sopenharmony_ci 2407db96d56Sopenharmony_ci#define _PICKLE_UNPICKLER_FIND_CLASS_METHODDEF \ 2417db96d56Sopenharmony_ci {"find_class", _PyCFunction_CAST(_pickle_Unpickler_find_class), METH_FASTCALL, _pickle_Unpickler_find_class__doc__}, 2427db96d56Sopenharmony_ci 2437db96d56Sopenharmony_cistatic PyObject * 2447db96d56Sopenharmony_ci_pickle_Unpickler_find_class_impl(UnpicklerObject *self, 2457db96d56Sopenharmony_ci PyObject *module_name, 2467db96d56Sopenharmony_ci PyObject *global_name); 2477db96d56Sopenharmony_ci 2487db96d56Sopenharmony_cistatic PyObject * 2497db96d56Sopenharmony_ci_pickle_Unpickler_find_class(UnpicklerObject *self, PyObject *const *args, Py_ssize_t nargs) 2507db96d56Sopenharmony_ci{ 2517db96d56Sopenharmony_ci PyObject *return_value = NULL; 2527db96d56Sopenharmony_ci PyObject *module_name; 2537db96d56Sopenharmony_ci PyObject *global_name; 2547db96d56Sopenharmony_ci 2557db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("find_class", nargs, 2, 2)) { 2567db96d56Sopenharmony_ci goto exit; 2577db96d56Sopenharmony_ci } 2587db96d56Sopenharmony_ci module_name = args[0]; 2597db96d56Sopenharmony_ci global_name = args[1]; 2607db96d56Sopenharmony_ci return_value = _pickle_Unpickler_find_class_impl(self, module_name, global_name); 2617db96d56Sopenharmony_ci 2627db96d56Sopenharmony_ciexit: 2637db96d56Sopenharmony_ci return return_value; 2647db96d56Sopenharmony_ci} 2657db96d56Sopenharmony_ci 2667db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_Unpickler___sizeof____doc__, 2677db96d56Sopenharmony_ci"__sizeof__($self, /)\n" 2687db96d56Sopenharmony_ci"--\n" 2697db96d56Sopenharmony_ci"\n" 2707db96d56Sopenharmony_ci"Returns size in memory, in bytes."); 2717db96d56Sopenharmony_ci 2727db96d56Sopenharmony_ci#define _PICKLE_UNPICKLER___SIZEOF___METHODDEF \ 2737db96d56Sopenharmony_ci {"__sizeof__", (PyCFunction)_pickle_Unpickler___sizeof__, METH_NOARGS, _pickle_Unpickler___sizeof____doc__}, 2747db96d56Sopenharmony_ci 2757db96d56Sopenharmony_cistatic Py_ssize_t 2767db96d56Sopenharmony_ci_pickle_Unpickler___sizeof___impl(UnpicklerObject *self); 2777db96d56Sopenharmony_ci 2787db96d56Sopenharmony_cistatic PyObject * 2797db96d56Sopenharmony_ci_pickle_Unpickler___sizeof__(UnpicklerObject *self, PyObject *Py_UNUSED(ignored)) 2807db96d56Sopenharmony_ci{ 2817db96d56Sopenharmony_ci PyObject *return_value = NULL; 2827db96d56Sopenharmony_ci Py_ssize_t _return_value; 2837db96d56Sopenharmony_ci 2847db96d56Sopenharmony_ci _return_value = _pickle_Unpickler___sizeof___impl(self); 2857db96d56Sopenharmony_ci if ((_return_value == -1) && PyErr_Occurred()) { 2867db96d56Sopenharmony_ci goto exit; 2877db96d56Sopenharmony_ci } 2887db96d56Sopenharmony_ci return_value = PyLong_FromSsize_t(_return_value); 2897db96d56Sopenharmony_ci 2907db96d56Sopenharmony_ciexit: 2917db96d56Sopenharmony_ci return return_value; 2927db96d56Sopenharmony_ci} 2937db96d56Sopenharmony_ci 2947db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_Unpickler___init____doc__, 2957db96d56Sopenharmony_ci"Unpickler(file, *, fix_imports=True, encoding=\'ASCII\', errors=\'strict\',\n" 2967db96d56Sopenharmony_ci" buffers=())\n" 2977db96d56Sopenharmony_ci"--\n" 2987db96d56Sopenharmony_ci"\n" 2997db96d56Sopenharmony_ci"This takes a binary file for reading a pickle data stream.\n" 3007db96d56Sopenharmony_ci"\n" 3017db96d56Sopenharmony_ci"The protocol version of the pickle is detected automatically, so no\n" 3027db96d56Sopenharmony_ci"protocol argument is needed. Bytes past the pickled object\'s\n" 3037db96d56Sopenharmony_ci"representation are ignored.\n" 3047db96d56Sopenharmony_ci"\n" 3057db96d56Sopenharmony_ci"The argument *file* must have two methods, a read() method that takes\n" 3067db96d56Sopenharmony_ci"an integer argument, and a readline() method that requires no\n" 3077db96d56Sopenharmony_ci"arguments. Both methods should return bytes. Thus *file* can be a\n" 3087db96d56Sopenharmony_ci"binary file object opened for reading, an io.BytesIO object, or any\n" 3097db96d56Sopenharmony_ci"other custom object that meets this interface.\n" 3107db96d56Sopenharmony_ci"\n" 3117db96d56Sopenharmony_ci"Optional keyword arguments are *fix_imports*, *encoding* and *errors*,\n" 3127db96d56Sopenharmony_ci"which are used to control compatibility support for pickle stream\n" 3137db96d56Sopenharmony_ci"generated by Python 2. If *fix_imports* is True, pickle will try to\n" 3147db96d56Sopenharmony_ci"map the old Python 2 names to the new names used in Python 3. The\n" 3157db96d56Sopenharmony_ci"*encoding* and *errors* tell pickle how to decode 8-bit string\n" 3167db96d56Sopenharmony_ci"instances pickled by Python 2; these default to \'ASCII\' and \'strict\',\n" 3177db96d56Sopenharmony_ci"respectively. The *encoding* can be \'bytes\' to read these 8-bit\n" 3187db96d56Sopenharmony_ci"string instances as bytes objects."); 3197db96d56Sopenharmony_ci 3207db96d56Sopenharmony_cistatic int 3217db96d56Sopenharmony_ci_pickle_Unpickler___init___impl(UnpicklerObject *self, PyObject *file, 3227db96d56Sopenharmony_ci int fix_imports, const char *encoding, 3237db96d56Sopenharmony_ci const char *errors, PyObject *buffers); 3247db96d56Sopenharmony_ci 3257db96d56Sopenharmony_cistatic int 3267db96d56Sopenharmony_ci_pickle_Unpickler___init__(PyObject *self, PyObject *args, PyObject *kwargs) 3277db96d56Sopenharmony_ci{ 3287db96d56Sopenharmony_ci int return_value = -1; 3297db96d56Sopenharmony_ci static const char * const _keywords[] = {"file", "fix_imports", "encoding", "errors", "buffers", NULL}; 3307db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "Unpickler", 0}; 3317db96d56Sopenharmony_ci PyObject *argsbuf[5]; 3327db96d56Sopenharmony_ci PyObject * const *fastargs; 3337db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 3347db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1; 3357db96d56Sopenharmony_ci PyObject *file; 3367db96d56Sopenharmony_ci int fix_imports = 1; 3377db96d56Sopenharmony_ci const char *encoding = "ASCII"; 3387db96d56Sopenharmony_ci const char *errors = "strict"; 3397db96d56Sopenharmony_ci PyObject *buffers = NULL; 3407db96d56Sopenharmony_ci 3417db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 1, 0, argsbuf); 3427db96d56Sopenharmony_ci if (!fastargs) { 3437db96d56Sopenharmony_ci goto exit; 3447db96d56Sopenharmony_ci } 3457db96d56Sopenharmony_ci file = fastargs[0]; 3467db96d56Sopenharmony_ci if (!noptargs) { 3477db96d56Sopenharmony_ci goto skip_optional_kwonly; 3487db96d56Sopenharmony_ci } 3497db96d56Sopenharmony_ci if (fastargs[1]) { 3507db96d56Sopenharmony_ci fix_imports = PyObject_IsTrue(fastargs[1]); 3517db96d56Sopenharmony_ci if (fix_imports < 0) { 3527db96d56Sopenharmony_ci goto exit; 3537db96d56Sopenharmony_ci } 3547db96d56Sopenharmony_ci if (!--noptargs) { 3557db96d56Sopenharmony_ci goto skip_optional_kwonly; 3567db96d56Sopenharmony_ci } 3577db96d56Sopenharmony_ci } 3587db96d56Sopenharmony_ci if (fastargs[2]) { 3597db96d56Sopenharmony_ci if (!PyUnicode_Check(fastargs[2])) { 3607db96d56Sopenharmony_ci _PyArg_BadArgument("Unpickler", "argument 'encoding'", "str", fastargs[2]); 3617db96d56Sopenharmony_ci goto exit; 3627db96d56Sopenharmony_ci } 3637db96d56Sopenharmony_ci Py_ssize_t encoding_length; 3647db96d56Sopenharmony_ci encoding = PyUnicode_AsUTF8AndSize(fastargs[2], &encoding_length); 3657db96d56Sopenharmony_ci if (encoding == NULL) { 3667db96d56Sopenharmony_ci goto exit; 3677db96d56Sopenharmony_ci } 3687db96d56Sopenharmony_ci if (strlen(encoding) != (size_t)encoding_length) { 3697db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 3707db96d56Sopenharmony_ci goto exit; 3717db96d56Sopenharmony_ci } 3727db96d56Sopenharmony_ci if (!--noptargs) { 3737db96d56Sopenharmony_ci goto skip_optional_kwonly; 3747db96d56Sopenharmony_ci } 3757db96d56Sopenharmony_ci } 3767db96d56Sopenharmony_ci if (fastargs[3]) { 3777db96d56Sopenharmony_ci if (!PyUnicode_Check(fastargs[3])) { 3787db96d56Sopenharmony_ci _PyArg_BadArgument("Unpickler", "argument 'errors'", "str", fastargs[3]); 3797db96d56Sopenharmony_ci goto exit; 3807db96d56Sopenharmony_ci } 3817db96d56Sopenharmony_ci Py_ssize_t errors_length; 3827db96d56Sopenharmony_ci errors = PyUnicode_AsUTF8AndSize(fastargs[3], &errors_length); 3837db96d56Sopenharmony_ci if (errors == NULL) { 3847db96d56Sopenharmony_ci goto exit; 3857db96d56Sopenharmony_ci } 3867db96d56Sopenharmony_ci if (strlen(errors) != (size_t)errors_length) { 3877db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 3887db96d56Sopenharmony_ci goto exit; 3897db96d56Sopenharmony_ci } 3907db96d56Sopenharmony_ci if (!--noptargs) { 3917db96d56Sopenharmony_ci goto skip_optional_kwonly; 3927db96d56Sopenharmony_ci } 3937db96d56Sopenharmony_ci } 3947db96d56Sopenharmony_ci buffers = fastargs[4]; 3957db96d56Sopenharmony_ciskip_optional_kwonly: 3967db96d56Sopenharmony_ci return_value = _pickle_Unpickler___init___impl((UnpicklerObject *)self, file, fix_imports, encoding, errors, buffers); 3977db96d56Sopenharmony_ci 3987db96d56Sopenharmony_ciexit: 3997db96d56Sopenharmony_ci return return_value; 4007db96d56Sopenharmony_ci} 4017db96d56Sopenharmony_ci 4027db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_UnpicklerMemoProxy_clear__doc__, 4037db96d56Sopenharmony_ci"clear($self, /)\n" 4047db96d56Sopenharmony_ci"--\n" 4057db96d56Sopenharmony_ci"\n" 4067db96d56Sopenharmony_ci"Remove all items from memo."); 4077db96d56Sopenharmony_ci 4087db96d56Sopenharmony_ci#define _PICKLE_UNPICKLERMEMOPROXY_CLEAR_METHODDEF \ 4097db96d56Sopenharmony_ci {"clear", (PyCFunction)_pickle_UnpicklerMemoProxy_clear, METH_NOARGS, _pickle_UnpicklerMemoProxy_clear__doc__}, 4107db96d56Sopenharmony_ci 4117db96d56Sopenharmony_cistatic PyObject * 4127db96d56Sopenharmony_ci_pickle_UnpicklerMemoProxy_clear_impl(UnpicklerMemoProxyObject *self); 4137db96d56Sopenharmony_ci 4147db96d56Sopenharmony_cistatic PyObject * 4157db96d56Sopenharmony_ci_pickle_UnpicklerMemoProxy_clear(UnpicklerMemoProxyObject *self, PyObject *Py_UNUSED(ignored)) 4167db96d56Sopenharmony_ci{ 4177db96d56Sopenharmony_ci return _pickle_UnpicklerMemoProxy_clear_impl(self); 4187db96d56Sopenharmony_ci} 4197db96d56Sopenharmony_ci 4207db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_UnpicklerMemoProxy_copy__doc__, 4217db96d56Sopenharmony_ci"copy($self, /)\n" 4227db96d56Sopenharmony_ci"--\n" 4237db96d56Sopenharmony_ci"\n" 4247db96d56Sopenharmony_ci"Copy the memo to a new object."); 4257db96d56Sopenharmony_ci 4267db96d56Sopenharmony_ci#define _PICKLE_UNPICKLERMEMOPROXY_COPY_METHODDEF \ 4277db96d56Sopenharmony_ci {"copy", (PyCFunction)_pickle_UnpicklerMemoProxy_copy, METH_NOARGS, _pickle_UnpicklerMemoProxy_copy__doc__}, 4287db96d56Sopenharmony_ci 4297db96d56Sopenharmony_cistatic PyObject * 4307db96d56Sopenharmony_ci_pickle_UnpicklerMemoProxy_copy_impl(UnpicklerMemoProxyObject *self); 4317db96d56Sopenharmony_ci 4327db96d56Sopenharmony_cistatic PyObject * 4337db96d56Sopenharmony_ci_pickle_UnpicklerMemoProxy_copy(UnpicklerMemoProxyObject *self, PyObject *Py_UNUSED(ignored)) 4347db96d56Sopenharmony_ci{ 4357db96d56Sopenharmony_ci return _pickle_UnpicklerMemoProxy_copy_impl(self); 4367db96d56Sopenharmony_ci} 4377db96d56Sopenharmony_ci 4387db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_UnpicklerMemoProxy___reduce____doc__, 4397db96d56Sopenharmony_ci"__reduce__($self, /)\n" 4407db96d56Sopenharmony_ci"--\n" 4417db96d56Sopenharmony_ci"\n" 4427db96d56Sopenharmony_ci"Implement pickling support."); 4437db96d56Sopenharmony_ci 4447db96d56Sopenharmony_ci#define _PICKLE_UNPICKLERMEMOPROXY___REDUCE___METHODDEF \ 4457db96d56Sopenharmony_ci {"__reduce__", (PyCFunction)_pickle_UnpicklerMemoProxy___reduce__, METH_NOARGS, _pickle_UnpicklerMemoProxy___reduce____doc__}, 4467db96d56Sopenharmony_ci 4477db96d56Sopenharmony_cistatic PyObject * 4487db96d56Sopenharmony_ci_pickle_UnpicklerMemoProxy___reduce___impl(UnpicklerMemoProxyObject *self); 4497db96d56Sopenharmony_ci 4507db96d56Sopenharmony_cistatic PyObject * 4517db96d56Sopenharmony_ci_pickle_UnpicklerMemoProxy___reduce__(UnpicklerMemoProxyObject *self, PyObject *Py_UNUSED(ignored)) 4527db96d56Sopenharmony_ci{ 4537db96d56Sopenharmony_ci return _pickle_UnpicklerMemoProxy___reduce___impl(self); 4547db96d56Sopenharmony_ci} 4557db96d56Sopenharmony_ci 4567db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_dump__doc__, 4577db96d56Sopenharmony_ci"dump($module, /, obj, file, protocol=None, *, fix_imports=True,\n" 4587db96d56Sopenharmony_ci" buffer_callback=None)\n" 4597db96d56Sopenharmony_ci"--\n" 4607db96d56Sopenharmony_ci"\n" 4617db96d56Sopenharmony_ci"Write a pickled representation of obj to the open file object file.\n" 4627db96d56Sopenharmony_ci"\n" 4637db96d56Sopenharmony_ci"This is equivalent to ``Pickler(file, protocol).dump(obj)``, but may\n" 4647db96d56Sopenharmony_ci"be more efficient.\n" 4657db96d56Sopenharmony_ci"\n" 4667db96d56Sopenharmony_ci"The optional *protocol* argument tells the pickler to use the given\n" 4677db96d56Sopenharmony_ci"protocol; supported protocols are 0, 1, 2, 3, 4 and 5. The default\n" 4687db96d56Sopenharmony_ci"protocol is 4. It was introduced in Python 3.4, and is incompatible\n" 4697db96d56Sopenharmony_ci"with previous versions.\n" 4707db96d56Sopenharmony_ci"\n" 4717db96d56Sopenharmony_ci"Specifying a negative protocol version selects the highest protocol\n" 4727db96d56Sopenharmony_ci"version supported. The higher the protocol used, the more recent the\n" 4737db96d56Sopenharmony_ci"version of Python needed to read the pickle produced.\n" 4747db96d56Sopenharmony_ci"\n" 4757db96d56Sopenharmony_ci"The *file* argument must have a write() method that accepts a single\n" 4767db96d56Sopenharmony_ci"bytes argument. It can thus be a file object opened for binary\n" 4777db96d56Sopenharmony_ci"writing, an io.BytesIO instance, or any other custom object that meets\n" 4787db96d56Sopenharmony_ci"this interface.\n" 4797db96d56Sopenharmony_ci"\n" 4807db96d56Sopenharmony_ci"If *fix_imports* is True and protocol is less than 3, pickle will try\n" 4817db96d56Sopenharmony_ci"to map the new Python 3 names to the old module names used in Python\n" 4827db96d56Sopenharmony_ci"2, so that the pickle data stream is readable with Python 2.\n" 4837db96d56Sopenharmony_ci"\n" 4847db96d56Sopenharmony_ci"If *buffer_callback* is None (the default), buffer views are serialized\n" 4857db96d56Sopenharmony_ci"into *file* as part of the pickle stream. It is an error if\n" 4867db96d56Sopenharmony_ci"*buffer_callback* is not None and *protocol* is None or smaller than 5."); 4877db96d56Sopenharmony_ci 4887db96d56Sopenharmony_ci#define _PICKLE_DUMP_METHODDEF \ 4897db96d56Sopenharmony_ci {"dump", _PyCFunction_CAST(_pickle_dump), METH_FASTCALL|METH_KEYWORDS, _pickle_dump__doc__}, 4907db96d56Sopenharmony_ci 4917db96d56Sopenharmony_cistatic PyObject * 4927db96d56Sopenharmony_ci_pickle_dump_impl(PyObject *module, PyObject *obj, PyObject *file, 4937db96d56Sopenharmony_ci PyObject *protocol, int fix_imports, 4947db96d56Sopenharmony_ci PyObject *buffer_callback); 4957db96d56Sopenharmony_ci 4967db96d56Sopenharmony_cistatic PyObject * 4977db96d56Sopenharmony_ci_pickle_dump(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 4987db96d56Sopenharmony_ci{ 4997db96d56Sopenharmony_ci PyObject *return_value = NULL; 5007db96d56Sopenharmony_ci static const char * const _keywords[] = {"obj", "file", "protocol", "fix_imports", "buffer_callback", NULL}; 5017db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "dump", 0}; 5027db96d56Sopenharmony_ci PyObject *argsbuf[5]; 5037db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2; 5047db96d56Sopenharmony_ci PyObject *obj; 5057db96d56Sopenharmony_ci PyObject *file; 5067db96d56Sopenharmony_ci PyObject *protocol = Py_None; 5077db96d56Sopenharmony_ci int fix_imports = 1; 5087db96d56Sopenharmony_ci PyObject *buffer_callback = Py_None; 5097db96d56Sopenharmony_ci 5107db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 3, 0, argsbuf); 5117db96d56Sopenharmony_ci if (!args) { 5127db96d56Sopenharmony_ci goto exit; 5137db96d56Sopenharmony_ci } 5147db96d56Sopenharmony_ci obj = args[0]; 5157db96d56Sopenharmony_ci file = args[1]; 5167db96d56Sopenharmony_ci if (!noptargs) { 5177db96d56Sopenharmony_ci goto skip_optional_pos; 5187db96d56Sopenharmony_ci } 5197db96d56Sopenharmony_ci if (args[2]) { 5207db96d56Sopenharmony_ci protocol = args[2]; 5217db96d56Sopenharmony_ci if (!--noptargs) { 5227db96d56Sopenharmony_ci goto skip_optional_pos; 5237db96d56Sopenharmony_ci } 5247db96d56Sopenharmony_ci } 5257db96d56Sopenharmony_ciskip_optional_pos: 5267db96d56Sopenharmony_ci if (!noptargs) { 5277db96d56Sopenharmony_ci goto skip_optional_kwonly; 5287db96d56Sopenharmony_ci } 5297db96d56Sopenharmony_ci if (args[3]) { 5307db96d56Sopenharmony_ci fix_imports = PyObject_IsTrue(args[3]); 5317db96d56Sopenharmony_ci if (fix_imports < 0) { 5327db96d56Sopenharmony_ci goto exit; 5337db96d56Sopenharmony_ci } 5347db96d56Sopenharmony_ci if (!--noptargs) { 5357db96d56Sopenharmony_ci goto skip_optional_kwonly; 5367db96d56Sopenharmony_ci } 5377db96d56Sopenharmony_ci } 5387db96d56Sopenharmony_ci buffer_callback = args[4]; 5397db96d56Sopenharmony_ciskip_optional_kwonly: 5407db96d56Sopenharmony_ci return_value = _pickle_dump_impl(module, obj, file, protocol, fix_imports, buffer_callback); 5417db96d56Sopenharmony_ci 5427db96d56Sopenharmony_ciexit: 5437db96d56Sopenharmony_ci return return_value; 5447db96d56Sopenharmony_ci} 5457db96d56Sopenharmony_ci 5467db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_dumps__doc__, 5477db96d56Sopenharmony_ci"dumps($module, /, obj, protocol=None, *, fix_imports=True,\n" 5487db96d56Sopenharmony_ci" buffer_callback=None)\n" 5497db96d56Sopenharmony_ci"--\n" 5507db96d56Sopenharmony_ci"\n" 5517db96d56Sopenharmony_ci"Return the pickled representation of the object as a bytes object.\n" 5527db96d56Sopenharmony_ci"\n" 5537db96d56Sopenharmony_ci"The optional *protocol* argument tells the pickler to use the given\n" 5547db96d56Sopenharmony_ci"protocol; supported protocols are 0, 1, 2, 3, 4 and 5. The default\n" 5557db96d56Sopenharmony_ci"protocol is 4. It was introduced in Python 3.4, and is incompatible\n" 5567db96d56Sopenharmony_ci"with previous versions.\n" 5577db96d56Sopenharmony_ci"\n" 5587db96d56Sopenharmony_ci"Specifying a negative protocol version selects the highest protocol\n" 5597db96d56Sopenharmony_ci"version supported. The higher the protocol used, the more recent the\n" 5607db96d56Sopenharmony_ci"version of Python needed to read the pickle produced.\n" 5617db96d56Sopenharmony_ci"\n" 5627db96d56Sopenharmony_ci"If *fix_imports* is True and *protocol* is less than 3, pickle will\n" 5637db96d56Sopenharmony_ci"try to map the new Python 3 names to the old module names used in\n" 5647db96d56Sopenharmony_ci"Python 2, so that the pickle data stream is readable with Python 2.\n" 5657db96d56Sopenharmony_ci"\n" 5667db96d56Sopenharmony_ci"If *buffer_callback* is None (the default), buffer views are serialized\n" 5677db96d56Sopenharmony_ci"into *file* as part of the pickle stream. It is an error if\n" 5687db96d56Sopenharmony_ci"*buffer_callback* is not None and *protocol* is None or smaller than 5."); 5697db96d56Sopenharmony_ci 5707db96d56Sopenharmony_ci#define _PICKLE_DUMPS_METHODDEF \ 5717db96d56Sopenharmony_ci {"dumps", _PyCFunction_CAST(_pickle_dumps), METH_FASTCALL|METH_KEYWORDS, _pickle_dumps__doc__}, 5727db96d56Sopenharmony_ci 5737db96d56Sopenharmony_cistatic PyObject * 5747db96d56Sopenharmony_ci_pickle_dumps_impl(PyObject *module, PyObject *obj, PyObject *protocol, 5757db96d56Sopenharmony_ci int fix_imports, PyObject *buffer_callback); 5767db96d56Sopenharmony_ci 5777db96d56Sopenharmony_cistatic PyObject * 5787db96d56Sopenharmony_ci_pickle_dumps(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 5797db96d56Sopenharmony_ci{ 5807db96d56Sopenharmony_ci PyObject *return_value = NULL; 5817db96d56Sopenharmony_ci static const char * const _keywords[] = {"obj", "protocol", "fix_imports", "buffer_callback", NULL}; 5827db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "dumps", 0}; 5837db96d56Sopenharmony_ci PyObject *argsbuf[4]; 5847db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; 5857db96d56Sopenharmony_ci PyObject *obj; 5867db96d56Sopenharmony_ci PyObject *protocol = Py_None; 5877db96d56Sopenharmony_ci int fix_imports = 1; 5887db96d56Sopenharmony_ci PyObject *buffer_callback = Py_None; 5897db96d56Sopenharmony_ci 5907db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf); 5917db96d56Sopenharmony_ci if (!args) { 5927db96d56Sopenharmony_ci goto exit; 5937db96d56Sopenharmony_ci } 5947db96d56Sopenharmony_ci obj = args[0]; 5957db96d56Sopenharmony_ci if (!noptargs) { 5967db96d56Sopenharmony_ci goto skip_optional_pos; 5977db96d56Sopenharmony_ci } 5987db96d56Sopenharmony_ci if (args[1]) { 5997db96d56Sopenharmony_ci protocol = args[1]; 6007db96d56Sopenharmony_ci if (!--noptargs) { 6017db96d56Sopenharmony_ci goto skip_optional_pos; 6027db96d56Sopenharmony_ci } 6037db96d56Sopenharmony_ci } 6047db96d56Sopenharmony_ciskip_optional_pos: 6057db96d56Sopenharmony_ci if (!noptargs) { 6067db96d56Sopenharmony_ci goto skip_optional_kwonly; 6077db96d56Sopenharmony_ci } 6087db96d56Sopenharmony_ci if (args[2]) { 6097db96d56Sopenharmony_ci fix_imports = PyObject_IsTrue(args[2]); 6107db96d56Sopenharmony_ci if (fix_imports < 0) { 6117db96d56Sopenharmony_ci goto exit; 6127db96d56Sopenharmony_ci } 6137db96d56Sopenharmony_ci if (!--noptargs) { 6147db96d56Sopenharmony_ci goto skip_optional_kwonly; 6157db96d56Sopenharmony_ci } 6167db96d56Sopenharmony_ci } 6177db96d56Sopenharmony_ci buffer_callback = args[3]; 6187db96d56Sopenharmony_ciskip_optional_kwonly: 6197db96d56Sopenharmony_ci return_value = _pickle_dumps_impl(module, obj, protocol, fix_imports, buffer_callback); 6207db96d56Sopenharmony_ci 6217db96d56Sopenharmony_ciexit: 6227db96d56Sopenharmony_ci return return_value; 6237db96d56Sopenharmony_ci} 6247db96d56Sopenharmony_ci 6257db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_load__doc__, 6267db96d56Sopenharmony_ci"load($module, /, file, *, fix_imports=True, encoding=\'ASCII\',\n" 6277db96d56Sopenharmony_ci" errors=\'strict\', buffers=())\n" 6287db96d56Sopenharmony_ci"--\n" 6297db96d56Sopenharmony_ci"\n" 6307db96d56Sopenharmony_ci"Read and return an object from the pickle data stored in a file.\n" 6317db96d56Sopenharmony_ci"\n" 6327db96d56Sopenharmony_ci"This is equivalent to ``Unpickler(file).load()``, but may be more\n" 6337db96d56Sopenharmony_ci"efficient.\n" 6347db96d56Sopenharmony_ci"\n" 6357db96d56Sopenharmony_ci"The protocol version of the pickle is detected automatically, so no\n" 6367db96d56Sopenharmony_ci"protocol argument is needed. Bytes past the pickled object\'s\n" 6377db96d56Sopenharmony_ci"representation are ignored.\n" 6387db96d56Sopenharmony_ci"\n" 6397db96d56Sopenharmony_ci"The argument *file* must have two methods, a read() method that takes\n" 6407db96d56Sopenharmony_ci"an integer argument, and a readline() method that requires no\n" 6417db96d56Sopenharmony_ci"arguments. Both methods should return bytes. Thus *file* can be a\n" 6427db96d56Sopenharmony_ci"binary file object opened for reading, an io.BytesIO object, or any\n" 6437db96d56Sopenharmony_ci"other custom object that meets this interface.\n" 6447db96d56Sopenharmony_ci"\n" 6457db96d56Sopenharmony_ci"Optional keyword arguments are *fix_imports*, *encoding* and *errors*,\n" 6467db96d56Sopenharmony_ci"which are used to control compatibility support for pickle stream\n" 6477db96d56Sopenharmony_ci"generated by Python 2. If *fix_imports* is True, pickle will try to\n" 6487db96d56Sopenharmony_ci"map the old Python 2 names to the new names used in Python 3. The\n" 6497db96d56Sopenharmony_ci"*encoding* and *errors* tell pickle how to decode 8-bit string\n" 6507db96d56Sopenharmony_ci"instances pickled by Python 2; these default to \'ASCII\' and \'strict\',\n" 6517db96d56Sopenharmony_ci"respectively. The *encoding* can be \'bytes\' to read these 8-bit\n" 6527db96d56Sopenharmony_ci"string instances as bytes objects."); 6537db96d56Sopenharmony_ci 6547db96d56Sopenharmony_ci#define _PICKLE_LOAD_METHODDEF \ 6557db96d56Sopenharmony_ci {"load", _PyCFunction_CAST(_pickle_load), METH_FASTCALL|METH_KEYWORDS, _pickle_load__doc__}, 6567db96d56Sopenharmony_ci 6577db96d56Sopenharmony_cistatic PyObject * 6587db96d56Sopenharmony_ci_pickle_load_impl(PyObject *module, PyObject *file, int fix_imports, 6597db96d56Sopenharmony_ci const char *encoding, const char *errors, 6607db96d56Sopenharmony_ci PyObject *buffers); 6617db96d56Sopenharmony_ci 6627db96d56Sopenharmony_cistatic PyObject * 6637db96d56Sopenharmony_ci_pickle_load(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 6647db96d56Sopenharmony_ci{ 6657db96d56Sopenharmony_ci PyObject *return_value = NULL; 6667db96d56Sopenharmony_ci static const char * const _keywords[] = {"file", "fix_imports", "encoding", "errors", "buffers", NULL}; 6677db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "load", 0}; 6687db96d56Sopenharmony_ci PyObject *argsbuf[5]; 6697db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; 6707db96d56Sopenharmony_ci PyObject *file; 6717db96d56Sopenharmony_ci int fix_imports = 1; 6727db96d56Sopenharmony_ci const char *encoding = "ASCII"; 6737db96d56Sopenharmony_ci const char *errors = "strict"; 6747db96d56Sopenharmony_ci PyObject *buffers = NULL; 6757db96d56Sopenharmony_ci 6767db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); 6777db96d56Sopenharmony_ci if (!args) { 6787db96d56Sopenharmony_ci goto exit; 6797db96d56Sopenharmony_ci } 6807db96d56Sopenharmony_ci file = args[0]; 6817db96d56Sopenharmony_ci if (!noptargs) { 6827db96d56Sopenharmony_ci goto skip_optional_kwonly; 6837db96d56Sopenharmony_ci } 6847db96d56Sopenharmony_ci if (args[1]) { 6857db96d56Sopenharmony_ci fix_imports = PyObject_IsTrue(args[1]); 6867db96d56Sopenharmony_ci if (fix_imports < 0) { 6877db96d56Sopenharmony_ci goto exit; 6887db96d56Sopenharmony_ci } 6897db96d56Sopenharmony_ci if (!--noptargs) { 6907db96d56Sopenharmony_ci goto skip_optional_kwonly; 6917db96d56Sopenharmony_ci } 6927db96d56Sopenharmony_ci } 6937db96d56Sopenharmony_ci if (args[2]) { 6947db96d56Sopenharmony_ci if (!PyUnicode_Check(args[2])) { 6957db96d56Sopenharmony_ci _PyArg_BadArgument("load", "argument 'encoding'", "str", args[2]); 6967db96d56Sopenharmony_ci goto exit; 6977db96d56Sopenharmony_ci } 6987db96d56Sopenharmony_ci Py_ssize_t encoding_length; 6997db96d56Sopenharmony_ci encoding = PyUnicode_AsUTF8AndSize(args[2], &encoding_length); 7007db96d56Sopenharmony_ci if (encoding == NULL) { 7017db96d56Sopenharmony_ci goto exit; 7027db96d56Sopenharmony_ci } 7037db96d56Sopenharmony_ci if (strlen(encoding) != (size_t)encoding_length) { 7047db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 7057db96d56Sopenharmony_ci goto exit; 7067db96d56Sopenharmony_ci } 7077db96d56Sopenharmony_ci if (!--noptargs) { 7087db96d56Sopenharmony_ci goto skip_optional_kwonly; 7097db96d56Sopenharmony_ci } 7107db96d56Sopenharmony_ci } 7117db96d56Sopenharmony_ci if (args[3]) { 7127db96d56Sopenharmony_ci if (!PyUnicode_Check(args[3])) { 7137db96d56Sopenharmony_ci _PyArg_BadArgument("load", "argument 'errors'", "str", args[3]); 7147db96d56Sopenharmony_ci goto exit; 7157db96d56Sopenharmony_ci } 7167db96d56Sopenharmony_ci Py_ssize_t errors_length; 7177db96d56Sopenharmony_ci errors = PyUnicode_AsUTF8AndSize(args[3], &errors_length); 7187db96d56Sopenharmony_ci if (errors == NULL) { 7197db96d56Sopenharmony_ci goto exit; 7207db96d56Sopenharmony_ci } 7217db96d56Sopenharmony_ci if (strlen(errors) != (size_t)errors_length) { 7227db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 7237db96d56Sopenharmony_ci goto exit; 7247db96d56Sopenharmony_ci } 7257db96d56Sopenharmony_ci if (!--noptargs) { 7267db96d56Sopenharmony_ci goto skip_optional_kwonly; 7277db96d56Sopenharmony_ci } 7287db96d56Sopenharmony_ci } 7297db96d56Sopenharmony_ci buffers = args[4]; 7307db96d56Sopenharmony_ciskip_optional_kwonly: 7317db96d56Sopenharmony_ci return_value = _pickle_load_impl(module, file, fix_imports, encoding, errors, buffers); 7327db96d56Sopenharmony_ci 7337db96d56Sopenharmony_ciexit: 7347db96d56Sopenharmony_ci return return_value; 7357db96d56Sopenharmony_ci} 7367db96d56Sopenharmony_ci 7377db96d56Sopenharmony_ciPyDoc_STRVAR(_pickle_loads__doc__, 7387db96d56Sopenharmony_ci"loads($module, data, /, *, fix_imports=True, encoding=\'ASCII\',\n" 7397db96d56Sopenharmony_ci" errors=\'strict\', buffers=())\n" 7407db96d56Sopenharmony_ci"--\n" 7417db96d56Sopenharmony_ci"\n" 7427db96d56Sopenharmony_ci"Read and return an object from the given pickle data.\n" 7437db96d56Sopenharmony_ci"\n" 7447db96d56Sopenharmony_ci"The protocol version of the pickle is detected automatically, so no\n" 7457db96d56Sopenharmony_ci"protocol argument is needed. Bytes past the pickled object\'s\n" 7467db96d56Sopenharmony_ci"representation are ignored.\n" 7477db96d56Sopenharmony_ci"\n" 7487db96d56Sopenharmony_ci"Optional keyword arguments are *fix_imports*, *encoding* and *errors*,\n" 7497db96d56Sopenharmony_ci"which are used to control compatibility support for pickle stream\n" 7507db96d56Sopenharmony_ci"generated by Python 2. If *fix_imports* is True, pickle will try to\n" 7517db96d56Sopenharmony_ci"map the old Python 2 names to the new names used in Python 3. The\n" 7527db96d56Sopenharmony_ci"*encoding* and *errors* tell pickle how to decode 8-bit string\n" 7537db96d56Sopenharmony_ci"instances pickled by Python 2; these default to \'ASCII\' and \'strict\',\n" 7547db96d56Sopenharmony_ci"respectively. The *encoding* can be \'bytes\' to read these 8-bit\n" 7557db96d56Sopenharmony_ci"string instances as bytes objects."); 7567db96d56Sopenharmony_ci 7577db96d56Sopenharmony_ci#define _PICKLE_LOADS_METHODDEF \ 7587db96d56Sopenharmony_ci {"loads", _PyCFunction_CAST(_pickle_loads), METH_FASTCALL|METH_KEYWORDS, _pickle_loads__doc__}, 7597db96d56Sopenharmony_ci 7607db96d56Sopenharmony_cistatic PyObject * 7617db96d56Sopenharmony_ci_pickle_loads_impl(PyObject *module, PyObject *data, int fix_imports, 7627db96d56Sopenharmony_ci const char *encoding, const char *errors, 7637db96d56Sopenharmony_ci PyObject *buffers); 7647db96d56Sopenharmony_ci 7657db96d56Sopenharmony_cistatic PyObject * 7667db96d56Sopenharmony_ci_pickle_loads(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 7677db96d56Sopenharmony_ci{ 7687db96d56Sopenharmony_ci PyObject *return_value = NULL; 7697db96d56Sopenharmony_ci static const char * const _keywords[] = {"", "fix_imports", "encoding", "errors", "buffers", NULL}; 7707db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "loads", 0}; 7717db96d56Sopenharmony_ci PyObject *argsbuf[5]; 7727db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; 7737db96d56Sopenharmony_ci PyObject *data; 7747db96d56Sopenharmony_ci int fix_imports = 1; 7757db96d56Sopenharmony_ci const char *encoding = "ASCII"; 7767db96d56Sopenharmony_ci const char *errors = "strict"; 7777db96d56Sopenharmony_ci PyObject *buffers = NULL; 7787db96d56Sopenharmony_ci 7797db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); 7807db96d56Sopenharmony_ci if (!args) { 7817db96d56Sopenharmony_ci goto exit; 7827db96d56Sopenharmony_ci } 7837db96d56Sopenharmony_ci data = args[0]; 7847db96d56Sopenharmony_ci if (!noptargs) { 7857db96d56Sopenharmony_ci goto skip_optional_kwonly; 7867db96d56Sopenharmony_ci } 7877db96d56Sopenharmony_ci if (args[1]) { 7887db96d56Sopenharmony_ci fix_imports = PyObject_IsTrue(args[1]); 7897db96d56Sopenharmony_ci if (fix_imports < 0) { 7907db96d56Sopenharmony_ci goto exit; 7917db96d56Sopenharmony_ci } 7927db96d56Sopenharmony_ci if (!--noptargs) { 7937db96d56Sopenharmony_ci goto skip_optional_kwonly; 7947db96d56Sopenharmony_ci } 7957db96d56Sopenharmony_ci } 7967db96d56Sopenharmony_ci if (args[2]) { 7977db96d56Sopenharmony_ci if (!PyUnicode_Check(args[2])) { 7987db96d56Sopenharmony_ci _PyArg_BadArgument("loads", "argument 'encoding'", "str", args[2]); 7997db96d56Sopenharmony_ci goto exit; 8007db96d56Sopenharmony_ci } 8017db96d56Sopenharmony_ci Py_ssize_t encoding_length; 8027db96d56Sopenharmony_ci encoding = PyUnicode_AsUTF8AndSize(args[2], &encoding_length); 8037db96d56Sopenharmony_ci if (encoding == NULL) { 8047db96d56Sopenharmony_ci goto exit; 8057db96d56Sopenharmony_ci } 8067db96d56Sopenharmony_ci if (strlen(encoding) != (size_t)encoding_length) { 8077db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 8087db96d56Sopenharmony_ci goto exit; 8097db96d56Sopenharmony_ci } 8107db96d56Sopenharmony_ci if (!--noptargs) { 8117db96d56Sopenharmony_ci goto skip_optional_kwonly; 8127db96d56Sopenharmony_ci } 8137db96d56Sopenharmony_ci } 8147db96d56Sopenharmony_ci if (args[3]) { 8157db96d56Sopenharmony_ci if (!PyUnicode_Check(args[3])) { 8167db96d56Sopenharmony_ci _PyArg_BadArgument("loads", "argument 'errors'", "str", args[3]); 8177db96d56Sopenharmony_ci goto exit; 8187db96d56Sopenharmony_ci } 8197db96d56Sopenharmony_ci Py_ssize_t errors_length; 8207db96d56Sopenharmony_ci errors = PyUnicode_AsUTF8AndSize(args[3], &errors_length); 8217db96d56Sopenharmony_ci if (errors == NULL) { 8227db96d56Sopenharmony_ci goto exit; 8237db96d56Sopenharmony_ci } 8247db96d56Sopenharmony_ci if (strlen(errors) != (size_t)errors_length) { 8257db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 8267db96d56Sopenharmony_ci goto exit; 8277db96d56Sopenharmony_ci } 8287db96d56Sopenharmony_ci if (!--noptargs) { 8297db96d56Sopenharmony_ci goto skip_optional_kwonly; 8307db96d56Sopenharmony_ci } 8317db96d56Sopenharmony_ci } 8327db96d56Sopenharmony_ci buffers = args[4]; 8337db96d56Sopenharmony_ciskip_optional_kwonly: 8347db96d56Sopenharmony_ci return_value = _pickle_loads_impl(module, data, fix_imports, encoding, errors, buffers); 8357db96d56Sopenharmony_ci 8367db96d56Sopenharmony_ciexit: 8377db96d56Sopenharmony_ci return return_value; 8387db96d56Sopenharmony_ci} 8397db96d56Sopenharmony_ci/*[clinic end generated code: output=1bb1ead3c828e108 input=a9049054013a1b77]*/ 840