From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng1.m.smailru.net (smtpng1.m.smailru.net [94.100.181.251]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 846474765E1 for ; Wed, 23 Dec 2020 15:36:31 +0300 (MSK) From: sergeyb@tarantool.org Date: Wed, 23 Dec 2020 15:36:06 +0300 Message-Id: In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH v3 2/5] test: make dict.items() compatible with Python 3.x List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tarantool-patches@dev.tarantool.org, v.shpilevoy@tarantool.org, lvasiliev@tarantool.org From: Sergey Bronnikov In Python 2.x calling items() makes a copy of the keys that you can iterate over while modifying the dict. This doesn't work in Python 3.x because items() returns an iterator instead of a list and Python 3 raise an exception "dictionary changed size during iteration". To workaround it one can use list to force a copy of the keys to be made. Part of #5538 --- test/box-py/iproto.test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/box-py/iproto.test.py b/test/box-py/iproto.test.py index 6ed49051b..6723e03f5 100644 --- a/test/box-py/iproto.test.py +++ b/test/box-py/iproto.test.py @@ -37,7 +37,7 @@ print(iproto.py_con.ping() > 0) s.close() key_names = {} -for (k,v) in globals().items(): +for (k,v) in list(globals().items()): if type(k) == str and k.startswith("IPROTO_") and type(v) == int: key_names[v] = k -- 2.25.1