[OE-core] [PATCH 01/16] scripts: python3: convert iterables to lists
Ed Bartosh
ed.bartosh at linux.intel.com
Thu Jun 2 15:04:30 UTC 2016
On Thu, Jun 02, 2016 at 08:55:21AM -0500, Leonardo Sandoval wrote:
> Ed,
>
> what is the reason for this change?
>
The reason is that in python 3 dict.keys() returns iterator unlike in
pyton 2 where it returns list. If dictionary is changed inside the loop
(which is the case here) "RuntimeError: dictionary changed size during iteration" will be raised.
Another case is when result of dict.keys() is added to the list. This
kind of operations would raise TypeError: unsupported operand type(s)
for +: 'dict_keys' and 'list'
>
> On 06/02/2016 05:12 AM, Ed Bartosh wrote:
> >Converted return value of items() keys() and values() to
> >lists when dictionary is modified in the loop and when
> >the result is added to the list.
> >
> >Signed-off-by: Ed Bartosh <ed.bartosh at linux.intel.com>
> >---
> > scripts/bitbake-whatchanged | 6 +++---
> > scripts/combo-layer | 2 +-
> > scripts/lib/devtool/build.py | 2 +-
> > scripts/lib/devtool/standard.py | 4 ++--
> > scripts/lib/recipetool/create_buildsys.py | 2 +-
> > scripts/lib/recipetool/create_buildsys_python.py | 6 +++---
> > scripts/oe-pkgdata-util | 2 +-
> > 7 files changed, 12 insertions(+), 12 deletions(-)
> >
> >diff --git a/scripts/bitbake-whatchanged b/scripts/bitbake-whatchanged
> >index a20adb2..b05aead 100755
> >--- a/scripts/bitbake-whatchanged
> >+++ b/scripts/bitbake-whatchanged
> >@@ -120,7 +120,7 @@ def print_added(d_new = None, d_old = None):
> > Print the newly added tasks
> > """
> > added = {}
> >- for k in d_new.keys():
> >+ for k in list(d_new.keys()):
> > if k not in d_old:
> > # Add the new one to added dict, and remove it from
> > # d_new, so the remaining ones are the changed ones
> >@@ -155,7 +155,7 @@ def print_vrchanged(d_new = None, d_old = None, vr = None):
> > """
> > pvchanged = {}
> > counter = 0
> >- for k in d_new.keys():
> >+ for k in list(d_new.keys()):
> > if d_new.get(k).get(vr) != d_old.get(k).get(vr):
> > counter += 1
> > pn, task = split_pntask(k)
> >@@ -279,7 +279,7 @@ Note:
> > # Remove the same one from both stamps.
> > cnt_unchanged = 0
> >- for k in new_dict.keys():
> >+ for k in list(new_dict.keys()):
> > if k in old_dict:
> > cnt_unchanged += 1
> > del(new_dict[k])
> >diff --git a/scripts/combo-layer b/scripts/combo-layer
> >index 234d9e4..7c41f92 100755
> >--- a/scripts/combo-layer
> >+++ b/scripts/combo-layer
> >@@ -1186,7 +1186,7 @@ def update_with_history(conf, components, revisions, repos):
> > msg = conf_commit_msg(conf, components)
> > new_tree = runcmd("git write-tree", **wargs).strip()
> > new_rev = runcmd("git commit-tree".split() +
> >- add_p([head] + additional_heads.keys()) +
> >+ add_p([head] + list(additional_heads.keys())) +
> > ["-m", msg, new_tree],
> > **wargs).strip()
> > # And done! This is the first time we change the HEAD in the actual work tree.
> >diff --git a/scripts/lib/devtool/build.py b/scripts/lib/devtool/build.py
> >index 48f6fe1..6be549d 100644
> >--- a/scripts/lib/devtool/build.py
> >+++ b/scripts/lib/devtool/build.py
> >@@ -27,7 +27,7 @@ logger = logging.getLogger('devtool')
> > def _set_file_values(fn, values):
> >- remaining = values.keys()
> >+ remaining = list(values.keys())
> > def varfunc(varname, origvalue, op, newlines):
> > newvalue = values.get(varname, origvalue)
> >diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
> >index 08153c6..a2516d6 100644
> >--- a/scripts/lib/devtool/standard.py
> >+++ b/scripts/lib/devtool/standard.py
> >@@ -998,7 +998,7 @@ def _export_local_files(srctree, rd, destdir):
> > bb.process.run(['git', 'checkout', tree, '--', '.'], cwd=srctree,
> > env=dict(os.environ, GIT_WORK_TREE=destdir,
> > GIT_INDEX_FILE=tmp_index))
> >- new_set = _git_ls_tree(srctree, tree, True).keys()
> >+ new_set = list(_git_ls_tree(srctree, tree, True).keys())
> > elif os.path.isdir(local_files_dir):
> > # If not tracked by Git, just copy from working copy
> > new_set = _ls_tree(os.path.join(srctree, 'oe-local-files'))
> >@@ -1309,7 +1309,7 @@ def reset(args, config, basepath, workspace):
> > raise DevtoolError("Recipe must be specified, or specify -a/--all to "
> > "reset all recipes")
> > if args.all:
> >- recipes = workspace.keys()
> >+ recipes = list(workspace.keys())
> > else:
> > recipes = [args.recipename]
> >diff --git a/scripts/lib/recipetool/create_buildsys.py b/scripts/lib/recipetool/create_buildsys.py
> >index de3d9ae..78ae4bc 100644
> >--- a/scripts/lib/recipetool/create_buildsys.py
> >+++ b/scripts/lib/recipetool/create_buildsys.py
> >@@ -682,7 +682,7 @@ class AutotoolsRecipeHandler(RecipeHandler):
> > process_macro(in_keyword, partial)
> > if extravalues:
> >- for k,v in extravalues.items():
> >+ for k,v in list(extravalues.items()):
> > if v:
> > if v.startswith('$') or v.startswith('@') or v.startswith('%'):
> > del extravalues[k]
> >diff --git a/scripts/lib/recipetool/create_buildsys_python.py b/scripts/lib/recipetool/create_buildsys_python.py
> >index 55cce0e..aff13cf 100644
> >--- a/scripts/lib/recipetool/create_buildsys_python.py
> >+++ b/scripts/lib/recipetool/create_buildsys_python.py
> >@@ -361,7 +361,7 @@ class PythonRecipeHandler(RecipeHandler):
> > # Naive mapping of setup() arguments to PKG-INFO field names
> > for d in [info, non_literals]:
> >- for key, value in d.items():
> >+ for key, value in list(d.items()):
> > new_key = _map(key)
> > if new_key != key:
> > del d[key]
> >@@ -443,7 +443,7 @@ class PythonRecipeHandler(RecipeHandler):
> > elif new_value != value:
> > info[variable] = new_value
> > elif hasattr(value, 'items'):
> >- for dkey, dvalue in value.items():
> >+ for dkey, dvalue in list(value.items()):
> > new_list = []
> > for pos, a_value in enumerate(dvalue):
> > new_value = replace_value(search, replace, a_value)
> >@@ -608,7 +608,7 @@ def gather_setup_info(fileobj):
> > visitor.visit(parsed)
> > non_literals, extensions = {}, []
> >- for key, value in visitor.keywords.items():
> >+ for key, value in list(visitor.keywords.items()):
> > if key == 'ext_modules':
> > if isinstance(value, list):
> > for ext in value:
> >diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
> >index b39d9b5..b16ecc9 100755
> >--- a/scripts/oe-pkgdata-util
> >+++ b/scripts/oe-pkgdata-util
> >@@ -240,7 +240,7 @@ def lookup_pkg(args):
> > sys.exit(1)
> > if args.reverse:
> >- items = mappings.values()
> >+ items = list(mappings.values())
> > else:
> > items = []
> > for pkg in pkgs:
>
--
--
Regards,
Ed
More information about the Openembedded-core
mailing list