Add optional support for Python 3 #5
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds Python 3 support. By default, the system version of
PythonLibsis used, but I can set it to use v2.7 by default instead.Mostly it was just a case of replacing
Py*functions with their Python 3 counterparts, but there were a couple of semantic changes I had to make to make things work with Python 3:wchar_tinternally. Rather than returningwchar_tfromstr()I opted to convert it to UTF8 and return astd::stringfor the Python 3 version (needed because you have to copy the memory). Likewisestd::map<char *, ...>has been changed to usestd::stringin a few places. I could have just replaced uses ofchar *withstd::stringfor Python 2 but that would have broken the API for existing users -- you could do this for consistency in some future version though. This change also means thatPython.hhas to be included inwrappy.hso that it knows what the return type forstr()should be.