diff -r ad76032d27da -r adacefb0b7ea mercurial/cext/parsers.c --- a/mercurial/cext/parsers.c Wed Sep 05 22:10:41 2018 +0900 +++ b/mercurial/cext/parsers.c Wed Sep 05 20:52:22 2018 +0900 @@ -382,12 +382,12 @@ char *p, *s; int now; - if (!PyArg_ParseTuple(args, "O!O!Oi:pack_dirstate", &PyDict_Type, &map, - &PyDict_Type, ©map, &pl, &now)) + if (!PyArg_ParseTuple(args, "O!O!O!i:pack_dirstate", &PyDict_Type, &map, + &PyDict_Type, ©map, &PyTuple_Type, &pl, &now)) return NULL; - if (!PySequence_Check(pl) || PySequence_Size(pl) != 2) { - PyErr_SetString(PyExc_TypeError, "expected 2-element sequence"); + if (PyTuple_Size(pl) != 2) { + PyErr_SetString(PyExc_TypeError, "expected 2-element tuple"); return NULL; } @@ -416,14 +416,14 @@ p = PyBytes_AS_STRING(packobj); - pn = PySequence_ITEM(pl, 0); + pn = PyTuple_GET_ITEM(pl, 0); if (PyBytes_AsStringAndSize(pn, &s, &l) == -1 || l != 20) { PyErr_SetString(PyExc_TypeError, "expected a 20-byte hash"); goto bail; } memcpy(p, s, l); p += 20; - pn = PySequence_ITEM(pl, 1); + pn = PyTuple_GET_ITEM(pl, 1); if (PyBytes_AsStringAndSize(pn, &s, &l) == -1 || l != 20) { PyErr_SetString(PyExc_TypeError, "expected a 20-byte hash"); goto bail; @@ -713,7 +713,7 @@ void manifest_module_init(PyObject *mod); void revlog_module_init(PyObject *mod); -static const int version = 5; +static const int version = 10; static void module_init(PyObject *mod) {