diff --git a/changelogs/fragments/6180-replace-deprecated-badzipfile.yml b/changelogs/fragments/6180-replace-deprecated-badzipfile.yml new file mode 100644 index 0000000000..7e0916a8d9 --- /dev/null +++ b/changelogs/fragments/6180-replace-deprecated-badzipfile.yml @@ -0,0 +1,2 @@ +bugfixes: + - "archive - avoid deprecated exception class on Python 3 (https://github.com/ansible-collections/community.general/pull/6180)." diff --git a/plugins/modules/archive.py b/plugins/modules/archive.py index 5744925312..bcead7b73c 100644 --- a/plugins/modules/archive.py +++ b/plugins/modules/archive.py @@ -198,6 +198,10 @@ from ansible.module_utils.basic import AnsibleModule, missing_required_lib from ansible.module_utils.common.text.converters import to_bytes, to_native from ansible.module_utils import six +try: # python 3.2+ + from zipfile import BadZipFile # type: ignore[attr-defined] +except ImportError: # older python + from zipfile import BadZipfile as BadZipFile LZMA_IMP_ERR = None if six.PY3: @@ -534,7 +538,7 @@ class ZipArchive(Archive): archive = zipfile.ZipFile(_to_native_ascii(path), 'r') checksums = set((info.filename, info.CRC) for info in archive.infolist()) archive.close() - except zipfile.BadZipfile: + except BadZipFile: checksums = set() return checksums