Use newer is_sequence function instead of MutableSequence (#44331)
* Use newer is_sequence function instead of MutableSequence. Fixes #44327 * Add changelog for #44331 * Update changelog fragment to describe the fix in more detail
This commit is contained in:
parent
dcc4a38f98
commit
2bf6507c44
3 changed files with 6 additions and 2 deletions
2
changelogs/fragments/flatten-better-type-check.yml
Normal file
2
changelogs/fragments/flatten-better-type-check.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- flatten filter - use better method of type checking allowing flattening of mutable and non-mutable sequences (https://github.com/ansible/ansible/pull/44331)
|
|
@ -34,7 +34,7 @@ import time
|
|||
import uuid
|
||||
import yaml
|
||||
|
||||
from collections import MutableMapping, MutableSequence
|
||||
from collections import MutableMapping
|
||||
import datetime
|
||||
from functools import partial
|
||||
from random import Random, SystemRandom, shuffle, random
|
||||
|
@ -462,7 +462,7 @@ def flatten(mylist, levels=None):
|
|||
if element in (None, 'None', 'null'):
|
||||
# ignore undefined items
|
||||
break
|
||||
elif isinstance(element, MutableSequence):
|
||||
elif is_sequence(element):
|
||||
if levels is None:
|
||||
ret.extend(flatten(element))
|
||||
elif levels >= 1:
|
||||
|
|
|
@ -176,6 +176,7 @@
|
|||
flat_full: '{{orig_list|flatten}}'
|
||||
flat_one: '{{orig_list|flatten(levels=1)}}'
|
||||
flat_two: '{{orig_list|flatten(levels=2)}}'
|
||||
flat_tuples: '{{ [1,3] | zip([2,4]) | list | flatten }}'
|
||||
|
||||
- name: Verify flatten filter works as expected
|
||||
assert:
|
||||
|
@ -183,6 +184,7 @@
|
|||
- flat_full == [1, 2, 3, 4, 5, 6, 7]
|
||||
- flat_one == [1, 2, 3, [4, [5]], 6, 7]
|
||||
- flat_two == [1, 2, 3, 4, [5], 6, 7]
|
||||
- flat_tuples == [1, 2, 3, 4]
|
||||
vars:
|
||||
orig_list: [1, 2, [3, [4, [5]], 6], 7]
|
||||
|
||||
|
|
Loading…
Reference in a new issue