detect python3 in the same way as six
coding style
coding style
we don't depend on six after all
manually cast to string for py2 compat
don't install pyyaml/lxml by default
use PY2/PY3 variables like in six
add the ucode flag so we only convert to unicode for compatible strings
assert that converted strings are byte strings
handle encoding a bit better
py2: rigorously test that returned collections contain all unicode objects
add the new _normalize api to normalize deserialization output