Yep, I did tests with Boost.Python and also SWIG. For both I created wrappers for important classes like sf::RenderWindow, sf::Sprite and sf::Image to do some benchmarking. As for Boost.Python I released the results in this forum and it turned out that Boost.Python is way too slow for SFML, since the calls take more time than with other solutions.
With SWIG I was able to compile and link the Python extension library, however it has always segfaulted because of some threading issue (AFAIR it had its origin somewhere in sf::Context).
As far as I know, SWIG is indeed flexible enough to give you the power to modify the binding for specific target languages. But I'm not really sure about this and to be honest I'm not a big fan of the SWIG approach anymore since it has a kinda complicated way of doing things. There're still some wrappers left on my list that I wanted to take a look at.
However I fully agree with svenstaro, the "raw" Python C API binding is absolute unmaintainable and error-prone. I hope there'll be another nice way to get a clean Python binding in a more elegant way.
Edit: Pyrex/Cython are no options here. Both are new Python-like languages that generate C or C++ code that's being compiled to a Python extension. It's not really meant to wrap existing code, but write new.