

Show HN: A pure Python implemention of Apache Thrift - lxyu
https://thriftpy.readthedocs.org/

======
_wmd
Great to see some competition to the official (and slightly unloved)
implementation, especially since you're working on accelerated binary
protocol, which the official implementation lacks (at least last I checked!).
One thing I'd suggest, though:

> Can import thrift file as normal py modules. The sdk code is generated on
> the fly.

This kind of thing immediately puts me off using the module. Messing with
process-global state just for the sake of convenience really isn't worth the
risk, if your intention is to develop serious software, where lives and
livelihoods might at some point depend on its reliability. As "import this"
puts it, "special cases aren't special enough to break the rules."

Would rather see the module import hook stuff removed, or at least easily
disabled. (e.g. have you tried to see how it works in combination with
something like py2exe? I suspect it will break)

~~~
lxyu
I just updated the code, now the magic import hook is disabled by default, and
can be install/remove by func.

------
jobeirne
The support for Python3 here is killer; Thrift amazingly has yet to merge a
number of patches that would enable py3 support despite many requests.

------
jupake
I like the fact that its pure python. This makes it perfect for use on PyPy or
Jython. +1

------
state_machine
This doesn't appear to support TCompactProtocol, which in the official Python
implementation uses a different byte-order on the wire than the official
implementation in every other language.

[https://issues.apache.org/jira/browse/THRIFT-1639](https://issues.apache.org/jira/browse/THRIFT-1639)

~~~
lxyu
Yes, currently only binary protocol was implemented.

------
dvirsky
Interesting. There is a similar project for Go with an alternative compiler
and implementation: [https://github.com/samuel/go-
thrift](https://github.com/samuel/go-thrift)

Last I checked, the state of the default thrift Go bindings was very lacking,
so I'm using this library instead.

------
e12e
No support for SSL/TLS transport? Or am I just not finding it in the sources?
:-/

