跳转到主要内容

支持广泛标签的CBOR(序列化/反序列化)

项目描述

Testing Status Publish Status Code Coverage Documentation Status

关于

此库提供了 Concise Binary Object Representation (CBOR) (RFC 8949)序列化格式的编码和解码。规范与原始RFC 7049完全兼容。阅读文档了解更多信息。

它使用纯Python实现,可选带有C后端。

在PyPy上,cbor2的性能几乎与C后端相同。

功能

  • 类似于json或pickle模块的简单API。

  • 支持许多CBOR标签,以及使用stdlib对象

  • 通用的标签解码。

  • 包括循环引用在内的共享值引用。

  • 使用索引替换重复字符串的紧凑编码的字符串引用

  • 可选的C模块后端,已在大端和小端架构上测试过。

  • 使用tag_hookobject_hook在解码时以及default在编码时扩展的标记值处理

  • 命令行诊断工具,将CBOR文件或流转换为JSON(python -m cbor2.tool,这是一种有损转换,仅用于诊断)

  • 全面的测试套件。

安装

pip install cbor2

需求

  • Python >= 3.8(或PyPy3 3.8+)

  • C扩展:任何可以构建Python扩展的C编译器。除Glibc<2.9外的任何现代libc。

构建C扩展

要强制构建可选的C扩展,设置操作系统环境变量CBOR2_BUILD_C_EXTENSION=1。要禁用构建可选的C扩展,设置操作系统环境变量CBOR2_BUILD_C_EXTENSION=0。如果未设置此环境变量,setup.py将默认自动检测兼容的C库并尝试编译扩展。

用法

基本用法

命令行用法

提供的命令行工具(cbor2)将CBOR数据从原始二进制或base64编码转换为可以打印为JSON的表示形式。这是一个有损转换,因为每个数据类型都被转换为可以表示为JSON值的东西。

工具还可以通过python -m cbor2.tool调用。

用法

# Pass hexadecimal through xxd.
$ echo a16568656c6c6f65776f726c64 | xxd -r -ps | cbor2 --pretty
{
    "hello": "world"
}
# Decode Base64 directly
$ echo ggEC | python -m cbor2.tool --decode
[1, 2]
# Read from a file encoded in Base64
$ python -m cbor2.tool -d tests/examples.cbor.b64
{...}

它可以与像jq这样的json处理工具一起使用,以允许语法着色、字段提取等。

也可以解码连接到序列中的CBOR数据项

$ echo ggECggMEggUG | cbor2 -d --sequence
[1, 2]
[3, 4]
[5, 6]

也可以将多个文件发送到单个输出文件

$ cbor2 -o all_files.json file1.cbor file2.cbor ... fileN.cbor

安全性

此库尚未针对恶意输入进行测试。从理论上讲,它应该与JSON一样安全,因为与pickle不同,解码器不会执行任何代码。

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分布

cbor2-5.6.4.tar.gz (100.9 kB 查看哈希值)

上传时间 源代码

构建版本

cbor2-5.6.4-py3-none-any.whl (23.8 kB 查看哈希值)

上传时间 Python 3

cbor2-5.6.4-cp312-cp312-win_amd64.whl (66.6 kB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

cbor2-5.6.4-cp312-cp312-musllinux_1_1_x86_64.whl (287.6 kB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.1+ x86-64

cbor2-5.6.4-cp312-cp312-musllinux_1_1_aarch64.whl (288.9 kB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.1+ ARM64

cbor2-5.6.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (270.6 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

cbor2-5.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (277.3 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ ARM64

cbor2-5.6.4-cp312-cp312-macosx_11_0_arm64.whl (67.6 kB 查看哈希值)

上传时间 CPython 3.12 macOS 11.0+ ARM64

cbor2-5.6.4-cp312-cp312-macosx_10_9_x86_64.whl (67.8 kB 查看哈希值)

上传时间 CPython 3.12 macOS 10.9+ x86-64

cbor2-5.6.4-cp311-cp311-win_amd64.whl (66.2 kB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

cbor2-5.6.4-cp311-cp311-musllinux_1_1_x86_64.whl (269.5 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.1+ x86-64

cbor2-5.6.4-cp311-cp311-musllinux_1_1_aarch64.whl (273.3 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.1+ ARM64

cbor2-5.6.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (249.3 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

cbor2-5.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (260.9 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

cbor2-5.6.4-cp311-cp311-macosx_11_0_arm64.whl (67.4 kB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

cbor2-5.6.4-cp311-cp311-macosx_10_9_x86_64.whl (66.7 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

cbor2-5.6.4-cp310-cp310-win_amd64.whl (66.2 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

cbor2-5.6.4-cp310-cp310-musllinux_1_1_x86_64.whl (258.3 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ x86-64

cbor2-5.6.4-cp310-cp310-musllinux_1_1_aarch64.whl (262.2 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ ARM64

cbor2-5.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (242.2 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

cbor2-5.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (254.0 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

cbor2-5.6.4-cp310-cp310-macosx_11_0_arm64.whl (67.4 kB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

cbor2-5.6.4-cp310-cp310-macosx_10_9_x86_64.whl (66.7 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

cbor2-5.6.4-cp39-cp39-win_amd64.whl (66.3 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

cbor2-5.6.4-cp39-cp39-musllinux_1_1_x86_64.whl (256.7 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.1+ x86-64

cbor2-5.6.4-cp39-cp39-musllinux_1_1_aarch64.whl (260.5 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.1+ ARM64

cbor2-5.6.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (240.6 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

cbor2-5.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (252.5 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

cbor2-5.6.4-cp39-cp39-macosx_11_0_arm64.whl (67.4 kB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

cbor2-5.6.4-cp39-cp39-macosx_10_9_x86_64.whl (66.8 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

cbor2-5.6.4-cp38-cp38-win_amd64.whl (66.1 kB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

cbor2-5.6.4-cp38-cp38-musllinux_1_1_x86_64.whl (278.5 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ x86-64

cbor2-5.6.4-cp38-cp38-musllinux_1_1_aarch64.whl (280.8 kB 查看哈希值)

上传时间 CPython 3.8 musllinux: musl 1.1+ ARM64

cbor2-5.6.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (256.3 kB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ x86-64

cbor2-5.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.4 kB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ARM64

cbor2-5.6.4-cp38-cp38-macosx_11_0_arm64.whl (67.5 kB 查看哈希值)

上传时间 CPython 3.8 macOS 11.0+ ARM64

cbor2-5.6.4-cp38-cp38-macosx_10_9_x86_64.whl (67.0 kB 查看哈希值)

上传时间 CPython 3.8 macOS 10.9+ x86-64

由以下机构支持