oh, sure, you are right, I don't know why I'm thought that in py3k string_types should be (bytes, str) by analogy as in py2k, where string_types is basestring, which is equivalent of (str, unicode) when using isinstance. Now it all makes sense to me:)