From 438ef4ca01e01787bc39632a3a77d332aef5bc4d Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Jun 04 2013 10:06:53 +0000 Subject: - patchlevel 1096 --- diff --git a/7.3.1096 b/7.3.1096 new file mode 100644 index 0000000..bc64eed --- /dev/null +++ b/7.3.1096 @@ -0,0 +1,333 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.1096 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.1096 +Problem: Python: popitem() was not defined in a standard way. +Solution: Remove the argument from popitem(). (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + + +*** ../vim-7.3.1095/runtime/doc/if_pyth.txt 2013-05-30 13:32:26.000000000 +0200 +--- runtime/doc/if_pyth.txt 2013-06-02 17:39:35.000000000 +0200 +*************** +*** 174,180 **** + vim.bindeval(str) *python-bindeval* + Like |python-eval|, but returns special objects described in + |python-bindeval-objects|. These python objects let you modify (|List| +! or |Dictionary|) or call (|Funcref|) vim objecs. + + Error object of the "vim" module + +--- 174,180 ---- + vim.bindeval(str) *python-bindeval* + Like |python-eval|, but returns special objects described in + |python-bindeval-objects|. These python objects let you modify (|List| +! or |Dictionary|) or call (|Funcref|) vim objects. + + Error object of the "vim" module + +*************** +*** 208,214 **** + :py w in vim.windows # Membership test + :py n = len(vim.windows) # Number of elements + :py for w in vim.windows: # Sequential access +! < Note: vim.windows object always accesses current tab page,. + |python-tabpage|.windows objects are bound to parent |python-tabpage| + object and always use windows from that tab page (or throw vim.error + in case tab page was deleted). You can keep a reference to both +--- 208,214 ---- + :py w in vim.windows # Membership test + :py n = len(vim.windows) # Number of elements + :py for w in vim.windows: # Sequential access +! < Note: vim.windows object always accesses current tab page. + |python-tabpage|.windows objects are bound to parent |python-tabpage| + object and always use windows from that tab page (or throw vim.error + in case tab page was deleted). You can keep a reference to both +*************** +*** 494,503 **** + Remove specified key from dictionary and return + corresponding value. If key is not found and default is + given returns the default, otherwise raises KeyError. +! popitem(key) +! Remove specified key from dictionary and return a pair +! with it and the corresponding value. Returned key is a new +! object. + has_key(key) + Check whether dictionary contains specified key, similar + to `key in dict`. +--- 494,502 ---- + Remove specified key from dictionary and return + corresponding value. If key is not found and default is + given returns the default, otherwise raises KeyError. +! popitem() +! Remove random key from dictionary and return (key, value) +! pair. + has_key(key) + Check whether dictionary contains specified key, similar + to `key in dict`. +*** ../vim-7.3.1095/src/if_py_both.h 2013-05-31 20:49:27.000000000 +0200 +--- src/if_py_both.h 2013-06-02 17:39:35.000000000 +0200 +*************** +*** 1061,1077 **** + dictitem_free(di); + } + +- if (flags & DICT_FLAG_RETURN_PAIR) +- { +- PyObject *tmp = r; +- +- if (!(r = Py_BuildValue("(" Py_bytes_fmt "O)", hi->hi_key, tmp))) +- { +- Py_DECREF(tmp); +- return NULL; +- } +- } +- + return r; + } + +--- 1061,1066 ---- +*************** +*** 1457,1471 **** + } + + static PyObject * +! DictionaryPopItem(DictionaryObject *self, PyObject *args) + { +! PyObject *keyObject; + +! if (!PyArg_ParseTuple(args, "O", &keyObject)) + return NULL; + +! return _DictionaryItem(self, keyObject, +! DICT_FLAG_POP|DICT_FLAG_RETURN_PAIR); + } + + static PyObject * +--- 1446,1483 ---- + } + + static PyObject * +! DictionaryPopItem(DictionaryObject *self) + { +! hashitem_T *hi; +! PyObject *r; +! PyObject *valObject; +! dictitem_T *di; + +! if (self->dict->dv_hashtab.ht_used == 0) +! { +! PyErr_SetNone(PyExc_KeyError); +! return NULL; +! } +! +! hi = self->dict->dv_hashtab.ht_array; +! while (HASHITEM_EMPTY(hi)) +! ++hi; +! +! di = dict_lookup(hi); +! +! if (!(valObject = ConvertToPyObject(&di->di_tv))) + return NULL; + +! if (!(r = Py_BuildValue("(" Py_bytes_fmt "O)", hi->hi_key, valObject))) +! { +! Py_DECREF(valObject); +! return NULL; +! } +! +! hash_remove(&self->dict->dv_hashtab, hi); +! dictitem_free(di); +! +! return r; + } + + static PyObject * +*************** +*** 1505,1511 **** + {"update", (PyCFunction)DictionaryUpdate, METH_VARARGS|METH_KEYWORDS, ""}, + {"get", (PyCFunction)DictionaryGet, METH_VARARGS, ""}, + {"pop", (PyCFunction)DictionaryPop, METH_VARARGS, ""}, +! {"popitem", (PyCFunction)DictionaryPopItem, METH_VARARGS, ""}, + {"has_key", (PyCFunction)DictionaryHasKey, METH_VARARGS, ""}, + {"__dir__", (PyCFunction)DictionaryDir, METH_NOARGS, ""}, + { NULL, NULL, 0, NULL} +--- 1517,1523 ---- + {"update", (PyCFunction)DictionaryUpdate, METH_VARARGS|METH_KEYWORDS, ""}, + {"get", (PyCFunction)DictionaryGet, METH_VARARGS, ""}, + {"pop", (PyCFunction)DictionaryPop, METH_VARARGS, ""}, +! {"popitem", (PyCFunction)DictionaryPopItem, METH_NOARGS, ""}, + {"has_key", (PyCFunction)DictionaryHasKey, METH_VARARGS, ""}, + {"__dir__", (PyCFunction)DictionaryDir, METH_NOARGS, ""}, + { NULL, NULL, 0, NULL} +*** ../vim-7.3.1095/src/testdir/test86.in 2013-06-01 20:32:09.000000000 +0200 +--- src/testdir/test86.in 2013-06-02 17:39:35.000000000 +0200 +*************** +*** 83,89 **** + :$put =pyeval('repr(''1'' in d)') + :$put =pyeval('repr(list(iter(d)))') + :$put =string(d) +! :$put =pyeval('repr(d.popitem(''0''))') + :$put =pyeval('repr(d.get(''0''))') + :$put =pyeval('repr(list(iter(d)))') + :" +--- 83,89 ---- + :$put =pyeval('repr(''1'' in d)') + :$put =pyeval('repr(list(iter(d)))') + :$put =string(d) +! :$put =pyeval('repr(d.popitem())') + :$put =pyeval('repr(d.get(''0''))') + :$put =pyeval('repr(list(iter(d)))') + :" +*************** +*** 226,232 **** + em('d[u"a\\0b"]=1') + + em('d.pop("abc")') +! em('d.popitem("abc")') + EOF + :$put =messages + :unlet messages +--- 226,232 ---- + em('d[u"a\\0b"]=1') + + em('d.pop("abc")') +! em('d.popitem()') + EOF + :$put =messages + :unlet messages +*** ../vim-7.3.1095/src/testdir/test86.ok 2013-06-01 20:32:09.000000000 +0200 +--- src/testdir/test86.ok 2013-06-02 17:39:35.000000000 +0200 +*************** +*** 26,32 **** + False + ['0'] + {'0': -1} +! ('', -1L) + None + [] + [0, 1, 2, 3] +--- 26,32 ---- + False + ['0'] + {'0': -1} +! ('0', -1L) + None + [] + [0, 1, 2, 3] +*************** +*** 666,672 **** + d.update((("a", FailingMappingKey()),)):(, NotImplementedError()) + <<< Finished + >> DictionaryPopItem +! d.popitem(1, 2):(, TypeError('function takes exactly 1 argument (2 given)',)) + >> DictionaryHasKey + d.has_key():(, TypeError('function takes exactly 1 argument (0 given)',)) + > List +--- 666,672 ---- + d.update((("a", FailingMappingKey()),)):(, NotImplementedError()) + <<< Finished + >> DictionaryPopItem +! d.popitem(1, 2):(, TypeError('popitem() takes no arguments (2 given)',)) + >> DictionaryHasKey + d.has_key():(, TypeError('function takes exactly 1 argument (0 given)',)) + > List +*** ../vim-7.3.1095/src/testdir/test87.in 2013-06-01 20:32:09.000000000 +0200 +--- src/testdir/test87.in 2013-06-02 17:39:35.000000000 +0200 +*************** +*** 77,83 **** + :$put =py3eval('repr(''1'' in d)') + :$put =py3eval('repr(list(iter(d)))') + :$put =string(d) +! :$put =py3eval('repr(d.popitem(''0''))') + :$put =py3eval('repr(d.get(''0''))') + :$put =py3eval('repr(list(iter(d)))') + :" +--- 77,83 ---- + :$put =py3eval('repr(''1'' in d)') + :$put =py3eval('repr(list(iter(d)))') + :$put =string(d) +! :$put =py3eval('repr(d.popitem())') + :$put =py3eval('repr(d.get(''0''))') + :$put =py3eval('repr(list(iter(d)))') + :" +*************** +*** 220,226 **** + em('d[b"a\\0b"]=1') + + em('d.pop("abc")') +! em('d.popitem("abc")') + EOF + :$put =messages + :unlet messages +--- 220,226 ---- + em('d[b"a\\0b"]=1') + + em('d.pop("abc")') +! em('d.popitem()') + EOF + :$put =messages + :unlet messages +*** ../vim-7.3.1095/src/testdir/test87.ok 2013-06-01 20:32:09.000000000 +0200 +--- src/testdir/test87.ok 2013-06-02 17:39:35.000000000 +0200 +*************** +*** 26,32 **** + False + [b'0'] + {'0': -1} +! (b'', -1) + None + [] + [0, 1, 2, 3] +--- 26,32 ---- + False + [b'0'] + {'0': -1} +! (b'0', -1) + None + [] + [0, 1, 2, 3] +*************** +*** 663,669 **** + d.update((("a", FailingMappingKey()),)):(, NotImplementedError()) + <<< Finished + >> DictionaryPopItem +! d.popitem(1, 2):(, TypeError('function takes exactly 1 argument (2 given)',)) + >> DictionaryHasKey + d.has_key():(, TypeError('function takes exactly 1 argument (0 given)',)) + > List +--- 663,669 ---- + d.update((("a", FailingMappingKey()),)):(, NotImplementedError()) + <<< Finished + >> DictionaryPopItem +! d.popitem(1, 2):(, TypeError('popitem() takes no arguments (2 given)',)) + >> DictionaryHasKey + d.has_key():(, TypeError('function takes exactly 1 argument (0 given)',)) + > List +*** ../vim-7.3.1095/src/version.c 2013-06-02 16:40:44.000000000 +0200 +--- src/version.c 2013-06-02 17:40:20.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1096, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +44. Your friends no longer send you e-mail...they just log on to your IRC + channel. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///