_compat.py 853 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. # -*- coding: utf-8 -*-
  2. """
  3. plan._compat
  4. ~~~~~~~~~~~~
  5. Some py2/py3 compatibility support.
  6. :copyright: (c) 2014 by Shipeng Feng.
  7. :license: BSD, see LICENSE for more details.
  8. """
  9. import sys
  10. PY2 = sys.version_info[0] == 2
  11. if not PY2:
  12. text_type = str
  13. string_types = (str,)
  14. integer_types = (int,)
  15. iterkeys = lambda d: iter(d.keys())
  16. itervalues = lambda d: iter(d.values())
  17. iteritems = lambda d: iter(d.items())
  18. else:
  19. text_type = unicode
  20. string_types = (str, unicode)
  21. integer_types = (int, long)
  22. iterkeys = lambda d: d.iterkeys()
  23. itervalues = lambda d: d.itervalues()
  24. iteritems = lambda d: d.iteritems()
  25. def get_binary_content(content):
  26. """Get binary content for binary_writer."""
  27. if isinstance(content, text_type):
  28. return content.encode('utf-8')
  29. return content