thriftpy2 0.7.1


pip install thriftpy2

  Latest version

Released: Sep 05, 2026

Project Links

Meta
Author: ThriftPy Organization
Requires Python: >=3.7

Classifiers

Development Status
  • 4 - Beta

Intended Audience
  • Developers

License
  • OSI Approved :: MIT License

Programming Language
  • Python :: 3
  • Python :: 3.14
  • Python :: 3.13
  • Python :: 3.12
  • Python :: 3.11
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.7
  • Python :: 3.8
  • Python :: 3.9
  • Python :: Implementation :: CPython
  • Python :: Implementation :: PyPy

Topic
  • Software Development
https://img.shields.io/codecov/c/github/Thriftpy/thriftpy2.svg https://img.shields.io/pypi/dm/thriftpy2.svg https://img.shields.io/pypi/v/thriftpy2.svg https://img.shields.io/pypi/pyversions/thriftpy2.svg https://img.shields.io/pypi/implementation/thriftpy2.svg

ThriftPy2 is a pure Python implementation of the Apache Thrift protocol. It allows you to parse Thrift IDL files and create RPC clients/servers without code generation or compilation.

Installation

Install with pip:

$ pip install thriftpy2

Features

  • Python 3.7+ and PyPy3.

  • Pure Python implementation. No need to compile or install the thrift package. All you need is thriftpy2 and a thrift file.

  • Dynamically load thrift files as Python modules, with code generated on the fly.

  • Compatible with Apache Thrift. You can use ThriftPy2 together with the official implementation servers and clients.

  • Easy RPC server/client setup.

  • Supported protocols and transports:

    • binary protocol (Python and Cython)

    • compact protocol (Python and Cython)

    • JSON protocol

    • Apache JSON protocol

    • buffered transport (Python and Cython)

    • framed transport

    • HTTP server and client

    • asyncio support

Quick Start

Define a pingpong.thrift file:

service PingPong {
    string ping(),
}

Server

import thriftpy2
from thriftpy2.rpc import make_server

pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift")


class Dispatcher(object):
    def ping(self):
        return "pong"


server = make_server(pingpong_thrift.PingPong, Dispatcher(), '127.0.0.1', 6000)
server.serve()

Client

import thriftpy2
from thriftpy2.rpc import make_client

pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift")

client = make_client(pingpong_thrift.PingPong, '127.0.0.1', 6000)
print(client.ping())  # prints "pong"

Async Server

import thriftpy2
from thriftpy2.rpc import make_aio_server

pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift")


class Dispatcher(object):
    async def ping(self):
        return "pong"


server = make_aio_server(pingpong_thrift.PingPong, Dispatcher(), '127.0.0.1', 6000)
server.serve()

Async Client

import asyncio
import thriftpy2
from thriftpy2.rpc import make_aio_client

pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift")


async def main():
    client = await make_aio_client(pingpong_thrift.PingPong, '127.0.0.1', 6000)
    print(await client.ping())  # prints "pong"
    client.close()


if __name__ == '__main__':
    asyncio.run(main())

See the examples and tests directories for more usage examples.

Migrate from ThriftPy

ThriftPy (https://github.com/eleme/thriftpy) has been deprecated. ThriftPy2 is fully compatible, just change your import:

import thriftpy2 as thriftpy

Contribute

  1. Fork the repo and make changes.

  2. Write a test that shows a bug was fixed or the feature works as expected.

  3. Make sure tox tests succeed.

  4. Send a pull request.

Contributors

https://github.com/Thriftpy/thriftpy2/graphs/contributors

Sponsors

./docs/jetbrains.svg

Changelog

https://github.com/Thriftpy/thriftpy2/releases

Wheel compatibility matrix

Platform CPython 3.9 CPython 3.10 CPython 3.11 CPython 3.12 CPython 3.13 CPython 3.14 CPython (additional flags: t) 3.13 CPython (additional flags: t) 3.14
macosx_11_0_arm64
manylinux2014_aarch64
manylinux2014_x86_64
manylinux_2_17_aarch64
manylinux_2_17_x86_64
manylinux_2_28_aarch64
manylinux_2_28_x86_64
musllinux_1_2_aarch64
musllinux_1_2_x86_64
win32
win_amd64
win_arm64

Files in release

thriftpy2-0.7.1-cp310-cp310-macosx_11_0_arm64.whl (1.0MiB)
thriftpy2-0.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.5MiB)
thriftpy2-0.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.5MiB)
thriftpy2-0.7.1-cp310-cp310-musllinux_1_2_aarch64.whl (2.5MiB)
thriftpy2-0.7.1-cp310-cp310-musllinux_1_2_x86_64.whl (2.5MiB)
thriftpy2-0.7.1-cp310-cp310-win32.whl (984.8KiB)
thriftpy2-0.7.1-cp310-cp310-win_amd64.whl (1017.1KiB)
thriftpy2-0.7.1-cp310-cp310-win_arm64.whl (989.6KiB)
thriftpy2-0.7.1-cp311-cp311-macosx_11_0_arm64.whl (1.0MiB)
thriftpy2-0.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.6MiB)
thriftpy2-0.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.6MiB)
thriftpy2-0.7.1-cp311-cp311-musllinux_1_2_aarch64.whl (2.6MiB)
thriftpy2-0.7.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.6MiB)
thriftpy2-0.7.1-cp311-cp311-win32.whl (982.3KiB)
thriftpy2-0.7.1-cp311-cp311-win_amd64.whl (1015.9KiB)
thriftpy2-0.7.1-cp311-cp311-win_arm64.whl (987.8KiB)
thriftpy2-0.7.1-cp312-cp312-macosx_11_0_arm64.whl (1.0MiB)
thriftpy2-0.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.6MiB)
thriftpy2-0.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.6MiB)
thriftpy2-0.7.1-cp312-cp312-musllinux_1_2_aarch64.whl (2.6MiB)
thriftpy2-0.7.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.6MiB)
thriftpy2-0.7.1-cp312-cp312-win32.whl (983.5KiB)
thriftpy2-0.7.1-cp312-cp312-win_amd64.whl (1015.7KiB)
thriftpy2-0.7.1-cp312-cp312-win_arm64.whl (983.6KiB)
thriftpy2-0.7.1-cp313-cp313-macosx_11_0_arm64.whl (1.0MiB)
thriftpy2-0.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.6MiB)
thriftpy2-0.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.6MiB)
thriftpy2-0.7.1-cp313-cp313-musllinux_1_2_aarch64.whl (2.5MiB)
thriftpy2-0.7.1-cp313-cp313-musllinux_1_2_x86_64.whl (2.6MiB)
thriftpy2-0.7.1-cp313-cp313-win32.whl (981.6KiB)
thriftpy2-0.7.1-cp313-cp313-win_amd64.whl (1012.2KiB)
thriftpy2-0.7.1-cp313-cp313-win_arm64.whl (981.1KiB)
thriftpy2-0.7.1-cp313-cp313t-macosx_11_0_arm64.whl (1.1MiB)
thriftpy2-0.7.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.8MiB)
thriftpy2-0.7.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.7MiB)
thriftpy2-0.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl (2.7MiB)
thriftpy2-0.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl (2.7MiB)
thriftpy2-0.7.1-cp313-cp313t-win32.whl (1005.0KiB)
thriftpy2-0.7.1-cp313-cp313t-win_amd64.whl (1.0MiB)
thriftpy2-0.7.1-cp313-cp313t-win_arm64.whl (1002.6KiB)
thriftpy2-0.7.1-cp314-cp314-macosx_11_0_arm64.whl (1.0MiB)
thriftpy2-0.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.6MiB)
thriftpy2-0.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.6MiB)
thriftpy2-0.7.1-cp314-cp314-musllinux_1_2_aarch64.whl (2.5MiB)
thriftpy2-0.7.1-cp314-cp314-musllinux_1_2_x86_64.whl (2.6MiB)
thriftpy2-0.7.1-cp314-cp314-win32.whl (984.7KiB)
thriftpy2-0.7.1-cp314-cp314-win_amd64.whl (1014.8KiB)
thriftpy2-0.7.1-cp314-cp314-win_arm64.whl (985.7KiB)
thriftpy2-0.7.1-cp314-cp314t-macosx_11_0_arm64.whl (1.1MiB)
thriftpy2-0.7.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.8MiB)
thriftpy2-0.7.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.7MiB)
thriftpy2-0.7.1-cp314-cp314t-musllinux_1_2_aarch64.whl (2.7MiB)
thriftpy2-0.7.1-cp314-cp314t-musllinux_1_2_x86_64.whl (2.7MiB)
thriftpy2-0.7.1-cp314-cp314t-win32.whl (1008.2KiB)
thriftpy2-0.7.1-cp314-cp314t-win_amd64.whl (1.0MiB)
thriftpy2-0.7.1-cp314-cp314t-win_arm64.whl (1005.9KiB)
thriftpy2-0.7.1-cp39-cp39-macosx_11_0_arm64.whl (1.0MiB)
thriftpy2-0.7.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.5MiB)
thriftpy2-0.7.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.5MiB)
thriftpy2-0.7.1-cp39-cp39-musllinux_1_2_aarch64.whl (2.5MiB)
thriftpy2-0.7.1-cp39-cp39-musllinux_1_2_x86_64.whl (2.5MiB)
thriftpy2-0.7.1-cp39-cp39-win32.whl (986.4KiB)
thriftpy2-0.7.1-cp39-cp39-win_amd64.whl (1018.9KiB)
thriftpy2-0.7.1-cp39-cp39-win_arm64.whl (991.4KiB)
thriftpy2-0.7.1.tar.gz (817.0KiB)
Extras:
Dependencies:
ply (<4.0,>=3.4)
ijson (<4.0,>=3.0)
typing_extensions (>=3.7.4)