Metadata-Version: 2.1 Name: thriftpy2 Version: 0.4.12 Summary: Pure python implementation of Apache Thrift. Home-page: https://thriftpy2.readthedocs.io/ Author: ThriftPy Organization Author-email: gotzehsing@gmail.com License: MIT Description: ============ ThriftPy2 ============ .. image:: https://travis-ci.com/Thriftpy/thriftpy2.svg?branch=develop :target: https://travis-ci.com/Thriftpy/thriftpy2 .. image:: https://img.shields.io/codecov/c/github/Thriftpy/thriftpy2.svg :target: https://codecov.io/gh/Thriftpy/thriftpy2 .. image:: https://img.shields.io/pypi/dm/thriftpy2.svg :target: https://pypi.org/project/thriftpy2/ .. image:: https://img.shields.io/pypi/v/thriftpy2.svg :target: https://pypi.org/project/thriftpy2/ .. image:: https://img.shields.io/pypi/pyversions/thriftpy2.svg :target: https://pypi.org/project/thriftpy2/ .. image:: https://img.shields.io/pypi/implementation/thriftpy2.svg :target: https://pypi.org/project/thriftpy2/ ThriftPy: https://github.com/eleme/thriftpy has been deprecated, ThriftPy2 aims to provide long term support. Migrate from Thriftpy? ====================== All you need is: .. code:: python import thriftpy2 as thriftpy That's it! thriftpy2 is fully compatible with thriftpy. Installation ============ Install with pip. .. code:: bash $ pip install thriftpy2 You may also install cython first to build cython extension locally. .. code:: bash $ pip install cython thriftpy2 Code Demo ========= ThriftPy make it super easy to write server/client code with thrift. Let's checkout this simple pingpong service demo. We need a 'pingpong.thrift' file: :: service PingPong { string ping(), } Then we can make a server: .. code:: python import thriftpy2 pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift") from thriftpy2.rpc import make_server class Dispatcher(object): def ping(self): return "pong" server = make_server(pingpong_thrift.PingPong, Dispatcher(), '127.0.0.1', 6000) server.serve() And a client: .. code:: python import thriftpy2 pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift") from thriftpy2.rpc import make_client client = make_client(pingpong_thrift.PingPong, '127.0.0.1', 6000) print(client.ping()) And it also supports asyncio on Python 3.5 or later: .. code:: python import thriftpy2 import asyncio from thriftpy2.rpc import make_aio_client echo_thrift = thriftpy2.load("echo.thrift", module_name="echo_thrift") async def request(): client = await make_aio_client( echo_thrift.EchoService, '127.0.0.1', 6000) print(await client.echo('hello, world')) client.close() .. code:: python import asyncio import thriftpy2 from thriftpy2.rpc import make_aio_server echo_thrift = thriftpy2.load("echo.thrift", module_name="echo_thrift") class Dispatcher(object): async def echo(self, param): print(param) await asyncio.sleep(0.1) return param def main(): server = make_aio_server( echo_thrift.EchoService, Dispatcher(), '127.0.0.1', 6000) server.serve() if __name__ == '__main__': main() See, it's that easy! You can refer to 'examples' and 'tests' directory in source code for more usage examples. Features ======== Currently ThriftPy have these features (also advantages over the upstream python lib): - Supports Python 2.7, Python 3.4+, PyPy and PyPy3. - Pure python implementation. No longer need to compile & install the 'thrift' package. All you need is thriftpy2 and thrift file. - Compatible with Apache Thrift. You can use ThriftPy together with the official implementation servers and clients, such as a upstream server with a thriftpy2 client or the opposite. Currently implemented protocols and transports: * binary protocol (python and cython) * compact protocol (python and cython) * json protocol * buffered transport (python & cython) * framed transport * tornado server and client (with tornado 4.0) * http server and client * asyncio support (python 3.5 or later) - Can directly load thrift file as module, the sdk code will be generated on the fly. For example, ``pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift")`` will load 'pingpong.thrift' as 'pingpong_thrift' module. Or, when import hook enabled by ``thriftpy2.install_import_hook()``, you can directly use ``import pingpong_thrift`` to import the 'pingpong.thrift' file as module, you may also use ``from pingpong_thrift import PingService`` to import specific object from the thrift module. - Easy RPC server/client setup. Contribute ========== 1. Fork the repo and make changes. 2. Write a test which shows a bug was fixed or the feature works as expected. 3. Make sure ``travis-ci`` or ``tox`` tests succeed. 4. Send pull request. Contributors ============ https://github.com/Thriftpy/thriftpy2/graphs/contributors Sponsors: ============ .. image:: ./docs/jetbrains.svg :target: https://www.jetbrains.com/?from=ThriftPy Changelog ========= https://github.com/Thriftpy/thriftpy2/blob/master/CHANGES.rst Keywords: thrift python thriftpy thriftpy2 Platform: UNKNOWN Classifier: Topic :: Software Development Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* Provides-Extra: dev Provides-Extra: tornado