15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)import sys
25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__all__ = ['b', 'basestring_', 'bytes', 'next', 'is_unicode']
45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)if sys.version < "3":
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    b = bytes = str
75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    basestring_ = basestring
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)else:
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    def b(s):
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        if isinstance(s, str):
125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            return s.encode('latin1')
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        return bytes(s)
145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    basestring_ = (bytes, str)
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bytes = bytes
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)text = str
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)if sys.version < "3":
195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    def next(obj):
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        return obj.next()
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)else:
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    next = next
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)if sys.version < "3":
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    def is_unicode(obj):
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        return isinstance(obj, unicode)
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)else:
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    def is_unicode(obj):
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        return isinstance(obj, str)
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)def coerce_text(v):
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if not isinstance(v, basestring_):
375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        if sys.version < "3":
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            attr = '__unicode__'
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        else:
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            attr = '__str__'
415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        if hasattr(v, attr):
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            return unicode(v)
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        else:
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            return bytes(v)
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    return v
46