Simplify UnsafeProxy as we don't need to use it for byte strings, only text

pull/12834/merge
Toshio Kuratomi 9 years ago
parent 3c87c44af5
commit 99e7bb35c1

@ -53,45 +53,27 @@
from __future__ import (absolute_import, division, print_function) from __future__ import (absolute_import, division, print_function)
__metaclass__ = type __metaclass__ = type
from ansible.utils.unicode import to_unicode
from ansible.compat.six import string_types, text_type
__all__ = ['UnsafeProxy', 'AnsibleUnsafe', 'wrap_var'] __all__ = ['UnsafeProxy', 'AnsibleUnsafe', 'wrap_var']
class AnsibleUnsafe(object): class AnsibleUnsafe(object):
__UNSAFE__ = True __UNSAFE__ = True
try: class AnsibleUnsafeText(text_type, AnsibleUnsafe):
unicode
except NameError:
# Python 3
class AnsibleUnsafeBytes(bytes, AnsibleUnsafe):
pass
class AnsibleUnsafeStr(str, AnsibleUnsafe):
pass pass
class UnsafeProxy(object): class UnsafeProxy(object):
def __new__(cls, obj, *args, **kwargs): def __new__(cls, obj, *args, **kwargs):
if obj.__class__ == str: # In our usage we should only receive unicode strings.
return AnsibleUnsafeStr(obj) # This conditional and conversion exists to sanity check the values
elif obj.__class__ == bytes: # we're given but we may want to take it out for testing and sanitize
return AnsibleUnsafeBytes(obj) # our input instead.
else: if isinstance(obj, string_types):
return obj obj = to_unicode(obj, errors='strict')
else: return AnsibleUnsafeText(obj)
# Python 2
class AnsibleUnsafeStr(str, AnsibleUnsafe):
pass
class AnsibleUnsafeUnicode(unicode, AnsibleUnsafe):
pass
class UnsafeProxy(object):
def __new__(cls, obj, *args, **kwargs):
if obj.__class__ == unicode:
return AnsibleUnsafeUnicode(obj)
elif obj.__class__ == str:
return AnsibleUnsafeStr(obj)
else:
return obj return obj

Loading…
Cancel
Save