diff --git a/lib/ansible/modules/system/authorized_key.py b/lib/ansible/modules/system/authorized_key.py index 2dc41919736..c3bdaf5e8bc 100644 --- a/lib/ansible/modules/system/authorized_key.py +++ b/lib/ansible/modules/system/authorized_key.py @@ -233,16 +233,16 @@ class keydict(dict): yield key, self[key][indexes[key]] def iteritems(self): - return self._item_generator() + raise NotImplementedError("Do not use this as it's not available on py3") def items(self): - return list(self.iteritems()) + return list(self._item_generator()) def itervalues(self): - return (item[1] for item in self.iteritems()) + raise NotImplementedError("Do not use this as it's not available on py3") def values(self): - return list(self.itervalues()) + return [item[1] for item in self.items()] def keyfile(module, user, write=False, path=None, manage_dir=True): diff --git a/packaging/release/templates/RELEASES.tmpl b/packaging/release/templates/RELEASES.tmpl index 537f16d80b3..dbe76c68966 100644 --- a/packaging/release/templates/RELEASES.tmpl +++ b/packaging/release/templates/RELEASES.tmpl @@ -5,9 +5,9 @@ VERSION RELEASE CODE NAME ++++++++++++++++++++++++++++++ {% for version in versions %} -{% for vkey, vdata in version.iteritems() %} +{% for vkey, vdata in version.items() %} {% for release in vdata.releases %} -{% for rkey, rdata in release.iteritems() %} +{% for rkey, rdata in release.items() %} {% set major_minor = vkey + "." + rkey %} {{"%-8s"|format(major_minor)}} {{"%-10s"|format(rdata)}} "{{vdata.code_name}}" {% endfor %} diff --git a/test/sanity/code-smell/no-dict-iteritems.sh b/test/sanity/code-smell/no-dict-iteritems.sh new file mode 100755 index 00000000000..9984c9c7bc2 --- /dev/null +++ b/test/sanity/code-smell/no-dict-iteritems.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +ITERITEMS_USERS=$(grep -rI '\.iteritems' . \ + --exclude-dir .git \ + --exclude-dir .tox \ + --exclude-dir docsite \ + | grep -v \ + -e 'six\.iteritems' \ + -e lib/ansible/compat/six/_six.py \ + -e lib/ansible/module_utils/six.py \ + -e test/sanity/code-smell/no-dict-iteritems.sh \ + ) + +if [ "${ITERITEMS_USERS}" ]; then + echo 'iteritems has been removed in python3. Alternatives:' + echo ' for KEY, VALUE in DICT.items():' + echo ' from ansible.module_utils.six import iteritems ; for KEY, VALUE in iteritems(DICT):' + echo ' from ansible.compat.six import iteritems ; for KEY, VALUE in iteritems(DICT):' + echo "${ITERITEMS_USERS}" + exit 1 +fi diff --git a/test/sanity/code-smell/no-dict-itervalues.sh b/test/sanity/code-smell/no-dict-itervalues.sh new file mode 100755 index 00000000000..7a7494860f5 --- /dev/null +++ b/test/sanity/code-smell/no-dict-itervalues.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +ITERVALUES_USERS=$(grep -rI '\.itervalues' . \ + --exclude-dir .git \ + --exclude-dir .tox \ + --exclude-dir docsite \ + | grep -v \ + -e 'six\.itervalues' \ + -e lib/ansible/compat/six/_six.py \ + -e lib/ansible/module_utils/six.py \ + -e test/sanity/code-smell/no-dict-itervalues.sh \ + ) + +if [ "${ITERVALUES_USERS}" ]; then + echo 'itervalues has been removed in python3. Alternatives:' + echo ' for VALUE in DICT.values():' + echo ' from ansible.module_utils.six import itervalues ; for VALUE in itervalues(DICT):' + echo ' from ansible.compat.six import itervalues ; for VALUE in itervalues(DICT):' + echo "${ITERVALUES_USERS}" + exit 1 +fi