1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

set theory v2, now can handle non hashable items like dicts

This commit is contained in:
Brian Coca 2014-05-25 13:10:33 -04:00
parent b5e91f81d8
commit 0dce5dae26

View file

@ -140,19 +140,40 @@ def regex_replace(value='', pattern='', replacement='', ignorecase=False):
return _re.sub(replacement, value) return _re.sub(replacement, value)
def unique(a): 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): 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): 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): 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): 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): def version_compare(value, version, operator='eq', strict=False):
''' Perform a version comparison on a value ''' ''' Perform a version comparison on a value '''