Why the cast to `str`? Typically, it's not a good idea to do that because, especially in cython, it generates py2/3 variability because in py2 str is an alias of bytes and in py3 it means "unicode" (http://docs.cython.org/src/tutorial/strings.html). Since the second parameter of `parse_str` is not typed, there's not reason to do that, right?