| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- 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
|