summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Coca <brian.coca+git@gmail.com>2014-05-25 13:10:33 -0400
committerBrian Coca <brian.coca+git@gmail.com>2014-05-25 13:20:55 -0400
commit0dce5dae26eed4c7de0e59d455fc7550a3f211b4 (patch)
treea119ad7f620e38d02a9dcc37409fba68fe14d209
parentb5e91f81d81d72ddbfc6eea83fae278e872e1797 (diff)
downloadansible-0dce5dae26eed4c7de0e59d455fc7550a3f211b4.tar.gz
set theory v2, now can handle non hashable items like dicts
-rw-r--r--lib/ansible/runner/filter_plugins/core.py31
1 files changed, 26 insertions, 5 deletions
diff --git a/lib/ansible/runner/filter_plugins/core.py b/lib/ansible/runner/filter_plugins/core.py
index 293ebc4ae3..57dd9debeb 100644
--- a/lib/ansible/runner/filter_plugins/core.py
+++ b/lib/ansible/runner/filter_plugins/core.py
@@ -140,19 +140,40 @@ def regex_replace(value='', pattern='', replacement='', ignorecase=False):
return _re.sub(replacement, value)
def unique(a):
- return set(a)
+ try:
+ c = set(a)
+ except TypeError, e:
+ c = []
+ c = filter(lambda x: x not in c, a)
+ return c
def intersect(a, b):
- return set(a).intersection(b)
+ try:
+ c = set(a) & set(b)
+ except TypeError, e:
+ c = filter(lambda x: x in b, a)
+ return c
def difference(a, b):
- return set(a).difference(b)
+ try:
+ c = set(a) - set(b)
+ except TypeError, e:
+ c = filter(lambda x: x not in b, a)
+ return c
def symmetric_difference(a, b):
- return set(a).symmetric_difference(b)
+ try:
+ c = set(a) ^ set(b)
+ except TypeError, e:
+ c = filter(lambda x: x not in intersect(a,b), union(a,b))
+ return c
def union(a, b):
- return set(a).union(b)
+ try:
+ c = set(a) | set(b)
+ except TypeError, e:
+ c = a + b
+ return c
def version_compare(value, version, operator='eq', strict=False):
''' Perform a version comparison on a value '''