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

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

This commit is contained in:
Toshio Kuratomi 2015-10-20 10:55:13 -07:00
parent 3c87c44af5
commit 99e7bb35c1

View file

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