From 516adf40f88f0f3d8d6461e1610ebbffe8d163c7 Mon Sep 17 00:00:00 2001 From: Stanislav Levin Date: Thu, 29 Jul 2021 12:50:58 +0300 Subject: [PATCH] pylint: Fix unnecessary-dict-index-lookup Pylint 2.9 introduced new check: > Emitted when iterating over the dictionary items (key-item pairs) and accessing the value by index lookup. The value can be accessed directly instead. Note: in Python3 removing from dict during an iteration is not possible even. For example, ``` cat a.py d = {"a": 1} for k, v in d.items(): if v is not None: del d[k] python3 a.py Traceback (most recent call last): File "/usr/src/RPM/BUILD/freeipa/a.py", line 3, in for k, v in d.items(): RuntimeError: dictionary changed size during iteration ``` Fixes: https://pagure.io/freeipa/issue/9117 Signed-off-by: Stanislav Levin Reviewed-By: Rob Crittenden --- ipaserver/plugins/baseldap.py | 2 +- ipatests/test_xmlrpc/tracker/base.py | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/ipaserver/plugins/baseldap.py b/ipaserver/plugins/baseldap.py index 0b7839536..61c9e98da 100644 --- a/ipaserver/plugins/baseldap.py +++ b/ipaserver/plugins/baseldap.py @@ -1788,7 +1788,7 @@ class LDAPAddMember(LDAPModMember): completed = 0 for (attr, objs) in member_dns.items(): for ldap_obj_name in objs: - for m_dn in member_dns[attr][ldap_obj_name]: + for m_dn in objs[ldap_obj_name]: assert isinstance(m_dn, DN) if not m_dn: continue diff --git a/ipatests/test_xmlrpc/tracker/base.py b/ipatests/test_xmlrpc/tracker/base.py index e5a05adf1..c2b8c3a1c 100644 --- a/ipatests/test_xmlrpc/tracker/base.py +++ b/ipatests/test_xmlrpc/tracker/base.py @@ -155,9 +155,7 @@ class ModificationTracker(BaseTracker): result = command() self.attrs.update(updates) self.attrs.update(expected_updates) - for key, value in self.attrs.items(): - if value is None: - del self.attrs[key] + self.attrs = {k: v for k, v in self.attrs.items() if v is not None} self.check_update( result,