From 1932f0008b69d565afc3579297e6a2c75531cb72 Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Fri, 1 Oct 2021 01:16:37 -0700 Subject: [PATCH] ansible-core - Remove support for Python 2.6. (#75853) --- changelogs/fragments/ansible-core-python-2.6.yaml | 2 ++ changelogs/fragments/ansible-test-python-2.6.yaml | 2 +- lib/ansible/module_utils/facts/packages.py | 2 +- lib/ansible/modules/async_status.py | 2 +- lib/ansible/modules/yum.py | 2 +- lib/ansible/plugins/action/package.py | 2 +- lib/ansible/plugins/connection/psrp.py | 3 +-- lib/ansible/plugins/connection/winrm.py | 4 ++-- lib/ansible/utils/display.py | 2 +- lib/ansible/vars/manager.py | 2 +- .../_util/controller/sanity/pylint/config/default.cfg | 2 -- .../sanity/validate-modules/validate_modules/module_args.py | 2 +- test/sanity/ignore.txt | 2 ++ 13 files changed, 15 insertions(+), 14 deletions(-) create mode 100644 changelogs/fragments/ansible-core-python-2.6.yaml diff --git a/changelogs/fragments/ansible-core-python-2.6.yaml b/changelogs/fragments/ansible-core-python-2.6.yaml new file mode 100644 index 00000000000..a71ff7c6f6b --- /dev/null +++ b/changelogs/fragments/ansible-core-python-2.6.yaml @@ -0,0 +1,2 @@ +deprecated_features: + - ansible-core - Remove support for Python 2.6. diff --git a/changelogs/fragments/ansible-test-python-2.6.yaml b/changelogs/fragments/ansible-test-python-2.6.yaml index 950ebe1bb1a..b850b2fecea 100644 --- a/changelogs/fragments/ansible-test-python-2.6.yaml +++ b/changelogs/fragments/ansible-test-python-2.6.yaml @@ -1,2 +1,2 @@ -major_changes: +deprecated_features: - ansible-test - Remove support for Python 2.6. diff --git a/lib/ansible/module_utils/facts/packages.py b/lib/ansible/module_utils/facts/packages.py index 808a41b6b08..2a9ccbaa8af 100644 --- a/lib/ansible/module_utils/facts/packages.py +++ b/lib/ansible/module_utils/facts/packages.py @@ -13,7 +13,7 @@ from ansible.module_utils.common._utils import get_all_subclasses def get_all_pkg_managers(): - return dict([(obj.__name__.lower(), obj) for obj in get_all_subclasses(PkgMgr) if obj not in (CLIMgr, LibMgr)]) + return {obj.__name__.lower(): obj for obj in get_all_subclasses(PkgMgr) if obj not in (CLIMgr, LibMgr)} class PkgMgr(with_metaclass(ABCMeta, object)): diff --git a/lib/ansible/modules/async_status.py b/lib/ansible/modules/async_status.py index 751ef98f766..4ab0ea82684 100644 --- a/lib/ansible/modules/async_status.py +++ b/lib/ansible/modules/async_status.py @@ -158,7 +158,7 @@ def main(): data['finished'] = 0 # Fix error: TypeError: exit_json() keywords must be strings - data = dict([(to_native(k), v) for k, v in iteritems(data)]) + data = {to_native(k): v for k, v in iteritems(data)} module.exit_json(**data) diff --git a/lib/ansible/modules/yum.py b/lib/ansible/modules/yum.py index cce78ebf20d..02a72a1ed04 100644 --- a/lib/ansible/modules/yum.py +++ b/lib/ansible/modules/yum.py @@ -776,7 +776,7 @@ class YumModule(YumDnf): rc2, out2, err2 = self.module.run_command(cmd) if rc == 0 and rc2 == 0: out += out2 - pkgs = set([p for p in out.split('\n') if p.strip()]) + pkgs = {p for p in out.split('\n') if p.strip()} if not pkgs: pkgs = self.is_installed(repoq, req_spec, qf=qf) return pkgs diff --git a/lib/ansible/plugins/action/package.py b/lib/ansible/plugins/action/package.py index 55c938d7c3c..6c436596e0f 100644 --- a/lib/ansible/plugins/action/package.py +++ b/lib/ansible/plugins/action/package.py @@ -30,7 +30,7 @@ class ActionModule(ActionBase): TRANSFERS_FILES = False - BUILTIN_PKG_MGR_MODULES = set([manager['name'] for manager in PKG_MGRS]) + BUILTIN_PKG_MGR_MODULES = {manager['name'] for manager in PKG_MGRS} def run(self, tmp=None, task_vars=None): ''' handler for package operations ''' diff --git a/lib/ansible/plugins/connection/psrp.py b/lib/ansible/plugins/connection/psrp.py index 7b8adce9c83..acacc1ce9af 100644 --- a/lib/ansible/plugins/connection/psrp.py +++ b/lib/ansible/plugins/connection/psrp.py @@ -828,8 +828,7 @@ if ($bytes_read -gt 0) { supported_args = [] for auth_kwarg in AUTH_KWARGS.values(): supported_args.extend(auth_kwarg) - extra_args = set([v.replace('ansible_psrp_', '') for v in - self.get_option('_extras')]) + extra_args = {v.replace('ansible_psrp_', '') for v in self.get_option('_extras')} unsupported_args = extra_args.difference(supported_args) for arg in unsupported_args: diff --git a/lib/ansible/plugins/connection/winrm.py b/lib/ansible/plugins/connection/winrm.py index b8d73536614..dd52288ee65 100644 --- a/lib/ansible/plugins/connection/winrm.py +++ b/lib/ansible/plugins/connection/winrm.py @@ -292,13 +292,13 @@ class Connection(ConnectionBase): self._kerb_managed = False # arg names we're going passing directly - internal_kwarg_mask = set(['self', 'endpoint', 'transport', 'username', 'password', 'scheme', 'path', 'kinit_mode', 'kinit_cmd']) + internal_kwarg_mask = {'self', 'endpoint', 'transport', 'username', 'password', 'scheme', 'path', 'kinit_mode', 'kinit_cmd'} self._winrm_kwargs = dict(username=self._winrm_user, password=self._winrm_pass) argspec = getargspec(Protocol.__init__) supported_winrm_args = set(argspec.args) supported_winrm_args.update(internal_kwarg_mask) - passed_winrm_args = set([v.replace('ansible_winrm_', '') for v in self.get_option('_extras')]) + passed_winrm_args = {v.replace('ansible_winrm_', '') for v in self.get_option('_extras')} unsupported_args = passed_winrm_args.difference(supported_winrm_args) # warn for kwargs unsupported by the installed version of pywinrm diff --git a/lib/ansible/utils/display.py b/lib/ansible/utils/display.py index 95cce2bbd58..f670cc8b453 100644 --- a/lib/ansible/utils/display.py +++ b/lib/ansible/utils/display.py @@ -225,7 +225,7 @@ class Display(with_metaclass(Singleton, object)): try: cmd = subprocess.Popen([self.b_cowsay, "-l"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) (out, err) = cmd.communicate() - self.cows_available = set([to_text(c) for c in out.split()]) + self.cows_available = {to_text(c) for c in out.split()} if C.ANSIBLE_COW_ACCEPTLIST and any(C.ANSIBLE_COW_ACCEPTLIST): self.cows_available = set(C.ANSIBLE_COW_ACCEPTLIST).intersection(self.cows_available) except Exception: diff --git a/lib/ansible/vars/manager.py b/lib/ansible/vars/manager.py index 518e4595efa..5301c7f4969 100644 --- a/lib/ansible/vars/manager.py +++ b/lib/ansible/vars/manager.py @@ -462,7 +462,7 @@ class VariableManager: if play: # This is a list of all role names of all dependencies for all roles for this play - dependency_role_names = list(set([d.get_name() for r in play.roles for d in r.get_all_dependencies()])) + dependency_role_names = list({d.get_name() for r in play.roles for d in r.get_all_dependencies()}) # This is a list of all role names of all roles for this play play_role_names = [r.get_name() for r in play.roles] diff --git a/test/lib/ansible_test/_util/controller/sanity/pylint/config/default.cfg b/test/lib/ansible_test/_util/controller/sanity/pylint/config/default.cfg index a1275aa9818..7e978176bdd 100644 --- a/test/lib/ansible_test/_util/controller/sanity/pylint/config/default.cfg +++ b/test/lib/ansible_test/_util/controller/sanity/pylint/config/default.cfg @@ -18,12 +18,10 @@ disable= comparison-with-callable, consider-iterating-dictionary, consider-merging-isinstance, - consider-using-dict-comprehension, # requires Python 2.7+, but we still require Python 2.6 support consider-using-dict-items, consider-using-enumerate, consider-using-get, consider-using-in, - consider-using-set-comprehension, # requires Python 2.7+, but we still require Python 2.6 support consider-using-ternary, consider-using-with, cyclic-import, # consistent results require running with --jobs 1 and testing all files diff --git a/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py b/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py index 3846ee5df8a..72beef3c595 100644 --- a/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py +++ b/test/lib/ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py @@ -119,7 +119,7 @@ def get_ps_argument_spec(filename, collection): util_manifest = json.dumps({ 'module_path': to_text(module_path, errors='surrogiate_or_strict'), 'ansible_basic': ps_dep_finder.cs_utils_module["Ansible.Basic"]['path'], - 'ps_utils': dict([(name, info['path']) for name, info in ps_dep_finder.ps_modules.items()]), + 'ps_utils': {name: info['path'] for name, info in ps_dep_finder.ps_modules.items()} }) script_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'ps_argspec.ps1') diff --git a/test/sanity/ignore.txt b/test/sanity/ignore.txt index ac4707be1c1..3a110170e23 100644 --- a/test/sanity/ignore.txt +++ b/test/sanity/ignore.txt @@ -187,6 +187,7 @@ test/support/integration/plugins/inventory/aws_ec2.py pylint:use-a-generator test/support/integration/plugins/modules/ec2_group.py pylint:use-a-generator test/support/integration/plugins/modules/lvg.py pylint:disallowed-name test/support/integration/plugins/modules/timezone.py pylint:disallowed-name +test/support/integration/plugins/modules/x509_crl.py pylint:consider-using-set-comprehension test/support/integration/plugins/module_utils/aws/core.py pylint:property-with-parameters test/support/integration/plugins/module_utils/cloud.py future-import-boilerplate test/support/integration/plugins/module_utils/cloud.py metaclass-boilerplate @@ -203,6 +204,7 @@ test/support/integration/plugins/module_utils/network/common/utils.py metaclass- test/support/integration/plugins/module_utils/network/common/utils.py pylint:use-a-generator test/support/integration/plugins/module_utils/postgres.py future-import-boilerplate test/support/integration/plugins/module_utils/postgres.py metaclass-boilerplate +test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/filter/network.py pylint:consider-using-dict-comprehension test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/module_utils/compat/ipaddress.py no-unicode-literals test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/module_utils/compat/ipaddress.py pep8:E203 test/support/network-integration/collections/ansible_collections/ansible/netcommon/plugins/module_utils/network/common/facts/facts.py pylint:unnecessary-comprehension