Happy new year. Pushed patches 1-4 of this series so far. Looking fine, but ugh, the below seems like a rather ugly hack in a function that is probably called quite often. Isn't there a more pretty variant avoiding these sys.version_info checks all over the place? > @@ -200,9 +201,9 @@ def _str(value): > > C++ code expects strings to be well formatted and > unicode strings to have no null bytes.""" > - if not isinstance(value, basestring): > + if not isinstance(value, basestring if sys.version_info[0] == 2 else str): > raise TypeError("Expected str or unicode, got %s" % str(type(value))) > - if isinstance(value, unicode): > + if sys.version_info[0] == 3 or isinstance(value, unicode): > return value.encode('UTF-8') > return value