跳转到主要内容

纯Python Flatbuffer Schema编译器

项目描述

Flattools - 处理Flatbuffers的工具集合

Flatbuffers 是一个跨平台序列化库,重点在于零拷贝反序列化。它们在功能上类似于协议缓冲区和thrift,但在游戏相关用例中,解码大型缓冲区的CPU成本可以显著降低。

Flattools 实现了一个用Python编写的替代 flatbuffers 编译器,称为 flatc.py。想法是我们可以将 flatbuffers 作为 与序列化无关 的 IDL 使用。

为什么这很重要?围绕一个良好的类型系统构建软件,该系统可以表达特定领域(如银行或游戏)中的各种概念(也称为领域驱动设计),是一种有用的技术,但 有些具有争议

使用方法

运行

$ flatc.py tests/parser-cases/color.fbs --kotlin=1

生成类似以下内容

    // automatically generated by the FlatBuffers compiler, do not modify
    enum class Color(val x: Byte) {
        Red(1),
        Green(2),
        Blue(3),
    }

    data class Person(
        val name: String,
        val address: String,
        val age: Short,
        val length: ULong,
        val favorite_color: Color,
    )

    data class Product(
        val label: String,
        val price: Int,
    )

    sealed class Item {
        class Product : Item()
        class Person : Item()
    }

这使用了基于 jinja2 的模板代码生成。

支持的语言:python、rust、kotlin、swift

支持新语言

欢迎对其他语言的pull请求。想法是从以下链接中的现有语言之一开始这里,并为您选择的语言创建一个新模板

已有现有测试,您只需为所选语言生成golden/expected数据即可。

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分发

flattools-0.6.tar.gz (30.3 kB 查看哈希)

上传时间

构建分发

flattools-0.6-py2.py3-none-any.whl (38.1 kB 查看哈希)

上传时间 Python 2 Python 3

由以下提供支持