跳转到主要内容

可扩展的持久对象容器

项目描述

BTrees:可扩展的持久化组件

https://github.com/zopefoundation/BTrees/actions/workflows/tests.yml/badge.svg https://coveralls.io/repos/github/zopefoundation/BTrees/badge.svg?branch=master Documentation Status Current version on PyPI Supported Python versions

本软件包包含一组基于修改后的B树数据结构构建的持久化对象容器。这些树针对ZODB的“乐观并发”模式进行了优化,并包括显式解决该机制检测到的冲突。

有关更多信息,请参阅Sphinx文档

BTrees 变更日志

6.1 (2024-09-17)

  • 添加对Python 3.13的最终支持。

6.0 (2024-05-30)

  • 取消对Python 3.7的支持。

  • 在GHA上构建Windows wheels。

5.2 (2024-02-07)

  • 自3.13a3起添加对Python 3.13的初步支持。

5.1 (2023-10-05)

  • 由于GHA上存在持续问题,取消使用setup_requires

  • 添加对Python 3.12的支持。

5.0 (2023-02-10)

  • 为Python 3.11构建Linux二进制wheels。

  • 取消对Python 2.7、3.5、3.6的支持。

4.11.3 (2022-11-17)

  • 点版本发布以重新构建完整的wheels集合

4.11.2 (2022-11-16)

  • 添加在macOS上构建arm64 wheels的支持。

4.11.1 (2022-11-09)

  • 修复GitHub Actions上的macOS wheel构建问题。

  • 我们不再为Windows平台提供32位wheels,仅提供x86_64。

4.11.0 (2022-11-03)

  • 添加对Python 3.11的支持。

4.10.1 (2022-09-12)

  • 禁用C代码中的不安全数学优化。(#184

4.10.0 (2022-03-09)

  • 添加对Python 3.10的支持。

4.9.2 (2021-06-09)

  • 修复fsBTree.TreeSetfsBTree.BTree引发SystemError的问题。参见问题170

  • 修复所有fsBTree对象,以提供正确的接口,并成为适当的集合ABC的实例。这是在版本4.8.0的其它模块中完成的。

  • 修复使用任意可迭代对象时使用的multiunionunionintersectiondifference函数。以前,可迭代对象必须预先排序,这意味着只有像listtuple这样的序列可以可靠地使用;但这并未记录。如果可迭代对象未排序,该函数会产生垃圾输出。现在,如果函数检测到任意可迭代对象,它将自动排序一个副本。

4.9.1 (2021-05-27)

  • 修复使用C扩展时在BTrees子类上设置未知类属性的问题。这阻止了子类被装饰为@component.adapter()。参见问题168

4.9.0 (2021-05-26)

  • 修复C实现以匹配Python实现,并允许通过直接更改BTree.max_leaf_sizeBTree.max_internal_size属性来为整个应用程序设置自定义节点大小,而无需创建新的子类。现在也可以从C实现中的类中读取这些属性。参见问题166

  • 为在BTreeTreeSet上存储zope.interface属性以及从本包中停用持久化对象添加各种小的性能改进。

4.8.0 (2021-04-14)

  • Python 2禁止使用类型对象作为键(除非使用实现BTrees所需比较的自定义元类)。在Python 3中,类型不可排序,因此它们已经被禁止,但在Python 2中,类型可以通过内存地址排序,这使得它们不适合用作键。参见问题

  • 使多联合(multiunion)、联合(union)、交集(intersection)和差集(difference)函数接受任意Python可迭代对象(遍历正确的类型)。之前,Python实现允许这样做,但C实现只允许在同一模块中定义的对象(如TreeSet或Bucket)。请参阅问题24

  • 修复Python版本中的持久性错误(#118)。

  • 修复Tree.__setstate__,不再接受除了树或桶类型以外的子节点以防止崩溃。请参阅PR 143以获取详细信息。

  • 使BTrees、TreeSet、Set和Buckets实现__and__、__or__和__sub__特殊方法,作为BTrees.Interfaces.IMerge.intersection、BTrees.Interfaces.IMerge.union和BTrees.Interfaces.IMerge.difference的快捷方式。

  • 添加对Python 3.9的支持。

  • 构建和上传aarch64 wheels。

  • 使PURE_PYTHON环境变量中的0值要求C扩展(除PyPy外)。之前,如果没有设置此变量,或者此变量未设置或不可用,则会静默忽略缺失的C扩展。将此变量设置为0时,如果C扩展不可用,则会引发ImportError。请参阅问题156

  • 使每个模块中的BTree对象(BTree、TreeSet、Set、Bucket)实际上提供BTrees.Interfaces中定义的接口。之前,它们没有提供任何接口。

  • 使所有BTree和Bucket对象成为collections.abc.MutableMapping的实例(即isinstance(btree, MutableMapping)现在是true;实际上没有改变继承)。作为此的一部分,它们现在提供popitem()方法。

  • 使所有TreeSet和Set对象成为collections.abc.MutableSet的实例(即isinstance(tree_set, MutableSet)现在是true;实际上没有改变继承)。作为此的一部分,它们现在提供更多方法,包括isdisjoint、discard和pop,并支持就地突变运算符,如tree_set |= other、tree_set += other、tree_set -= other和tree_set ^= other。请参阅问题121

  • 将ISized和IReadSequence的定义更新为zope.interface.common.collections.ISized和zope.interface.common.sequence.IMinimalSequence。

  • 从ICollection中移除__nonzero__接口方法。实际上没有对象实现此类方法;相反,布尔值通常从__len__中获取。

  • 调整 ISet 的定义,以在 C3 和旧版排序下产生相同的解析顺序。这意味着旧版排序略有变化,但在此包中设置 ZOPE_INTERFACE_LOG_CHANGED_IRO=1 时不会发出警告。请注意,由于 C3 排序仍然一致,因此没有使用旧版排序;只能通过设置 ZOPE_INTERFACE_USE_LEGACY_IRO=1 来获取它。有关所有接口更新的信息,请参阅 PR 159

  • 修复 getsetdefaultpop 方法以及 in 操作符,以防止在对象或子对象损坏时抑制 POSKeyError。之前,这些错误由 ZODB 记录,但没有传播。请参阅 问题 161

4.7.2 (2020-04-07)

  • 修复更多 C 和 Python 不一致的情况。对于 ingethas_key 的整数键整数溢出,C 实现现在与 Python 实现的行为相同。现在,如果测试的值会溢出或下溢,它们在两个版本中都返回 False(默认值)和 False。之前,C 实现会引发 OverflowErrorKeyError,而 Python 实现按预期工作。请参阅 问题 140

4.7.1 (2020-03-22)

  • 修复模块中 __all__ 的定义。在 4.7.0 中,它们错误地省略了名称。请参阅 PR 132

  • 确保所有对象的接口解析顺序一致。请参阅 问题 137

4.7.0 (2020-03-17)

  • 添加树的未签名变体。这些使用初始的“U”表示 32 位数据,“Q”表示 64 位数据(用于“quad”,类似于 C printf 函数使用的以及 Python struct 模块使用的)。

  • 修复在纯 Python 实现中使用时(PyPy 和当 PURE_PYTHON 在环境中)BTrees.OIBTree.using64bits 的值。

  • 使在 Python 2 和 Python 3 之间以及 32 位和 64 位变体之间值超出范围时引发的错误更加一致。

  • 使 Bucket 类型与更新到版本 4.3.2 的 BTree 类型保持一致:对于使用默认比较或非整数键的查询不再引发 TypeError

4.6.1 (2019-11-07)

  • 添加对 Python 3.8 的支持。

4.6.0 (2019-07-30)

  • 放弃对 Python 3.4 的支持。

  • 修复对持久性 4.4 的测试。

  • 停止意外在 macOS 轮子中安装 'terryfy' 包。请参阅 问题 98

  • 修复 bucket_repr() 中的分段错误。请参阅 问题 106

4.5.1 (2018-08-09)

  • 为 Python 3.7 生成二进制轮子。

  • 使用 pyproject.toml 指定构建依赖关系。这需要 pip 18 或更高版本才能从源代码构建。

4.5.0 (2018-04-23)

4.4.1 (2017-01-24)

修复了包装错误,导致包含额外文件(其中一些在特定平台上引起问题)。

4.4.0 (2017-01-11)

  • 允许None作为特殊键(比所有其他键排序更小)。

    这在一定程度上回归到BTrees 3的行为,即允许再次将None作为键。其他具有默认排序的对象仍不允许作为键。

4.3.2 (2017-01-05)

  • 使CPython实现与纯Python实现一致,并且仅在设置键时检查对象键的默认比较。在Python 2中,这使得可以使用较宽松版本的BTrees删除键。(在Python 3中,无法删除无法排序的键。)同样,所有版本都可以解包已经具有此类键的树。请参阅:https://github.com/zopefoundation/BTrees/issues/53https://github.com/zopefoundation/BTrees/issues/51

  • 使Python实现与CPython实现一致,并在检查相等性和执行比较之前检查对象键的标识。这可以修复具有现在已损坏比较函数的键的树。请参阅https://github.com/zopefoundation/BTrees/issues/50

  • 使CPython实现与纯Python实现一致,并且不再在__getitem__getin操作中对对象键(在对象键树中)使用默认比较时引发TypeError。相反,结果将分别为KeyError、默认值和False。以前,CPython在这些情况下引发TypeError,而Python实现的行为符合要求。

    同样,在整数键树中,非整数键将分别在两种实现中引发KeyError、返回默认值和返回False。以前,纯Python引发KeyError,返回默认值,并引发TypeError,而CPython在所有三种情况下都引发TypeError

4.3.1 (2016-05-16)

  • 包装:修复用于在Travis上自动化wheel创建的密码。

4.3.0 (2016-05-10)

  • 修复了在Win64上传递64位值到长键/值时意外引发的OverflowError。请参阅:https://github.com/zopefoundation/BTrees/issues/32

  • 在tox下测试PURE_PYTHON环境时,避免污染用户的全局wheel缓存。

  • 确保在PyPy上使用的纯Python实现,以及在CPython上没有C编译器时,与C版本进行相同的pickle。解包将选择最佳可用的实现。此更改防止了互操作性问题和数据库损坏,如果同时使用两种实现。虽然现在无法将Python实现pickle并使其在C实现可用时解包到Python实现,但现有的Python pickles仍然可以解包到Python实现(直到再次pickle)。请参阅:https://github.com/zopefoundation/BTrees/issues/19

  • 在纯Python环境中解包空的BTrees时,避免创建无效对象。

  • 放弃对Python 2.6和3.2的支持。

4.2.0 (2015-11-13)

  • 添加对Python 3.5的支持。

4.1.4 (2015-06-02)

  • 确保纯Python的Bucket和Set对象具有与C版本类似的人可读的__repr__

4.1.3 (2015-05-19)

4.1.2 (2015-04-07)

4.1.1 (2014-12-27)

  • 在纯Python的OLBTrees中适应长值。

4.1.0 (2014-12-26)

  • 添加对PyPy和PyPy3的支持。

  • 添加对Python 3.4的支持。

  • BTree子类可以定义max_leaf_sizemax_internal_size来控制Bucket/Set和BTree/TreeSet节点的最大大小。

  • 在Python 3下正确检测32位机器上的整数溢出。

  • 更新纯Python和C树/集合以接受显式的None来指示minKeymaxKey的最大/最小值。(PR #3)

  • 更新纯Python树/集合以接受显式的None来指示keysvaluesitems的开区间。(PR #3)

4.0.8 (2013-05-25)

  • 修复Py3k中对象的基于值的比较:解决了[OLI]OBTrees/OBuckets的无效合并。

  • 确保纯Python实现的OOBTree.byValue与C实现的语义(逆排序)相匹配。

4.0.7 (2013-05-22)

  • 问题2:在OS/X的32位模式下编译错误。

  • 测试对PURE_PYTHON环境变量的支持:如果设置,则不会构建、导入或测试C扩展。

4.0.6 (2013-05-14)

  • ZODB附加包改为仅需要真实的ZODB包,而不是ZODB3元包:根据使用的版本,元包可能会拉入此包和persistent的旧版本。

  • 修复了setup.py中的Python版本检查。

4.0.5 (2013-01-15)

  • 调整包含垃圾字符的桶对象的repr

4.0.4 (2013-01-12)

  • 从纯Python模拟C扩展模块使用的(私有)迭代器。此更改仅具有“表面”意义:它防止了ZCML zope.app.security:permission.zcml失败。模拟的类不是功能性的,应视为实现细节。

  • 适应buildout,因为我们不再捆绑‘persistent.h’的副本。

  • 修复Windows上的测试失败:不再依赖于sys.maxint的溢出。

4.0.3 (2013-01-04)

  • 添加了setup_requires==['persistent']

4.0.2 (2013-01-03)

  • 更新了Trove分类器。

  • 添加了对Python 3.2、Python 3.3和PyPy的显式支持。请注意,C扩展目前不在PyPy上提供。

  • Python参考实现现在在所有平台上单独于C版本进行测试。

  • 100%单元测试覆盖率。

4.0.1 (2012-10-21)

  • 提供本地回退以包含持久性C头文件,如果持久性分发未安装。这使得winbot很高兴。

4.0.0 (2012-10-20)

平台更改

  • 取消对Python < 2.6的支持。

  • BTrees作为单独的发行版提取出来。

测试更改

  • 在所有受覆盖平台上使用tox进行测试。

  • 添加了对使用toxjenkins的持续集成的支持。

  • 添加了setup.py dev别名(安装nosecoverage)。

  • 取消了对zope.testing / zope.testrunner的依赖:测试现在使用setup.py test运行。

文档更改

  • 添加了API参考,通过Spinx的autodoc生成。

  • 基于ZODB指南添加了Sphinx文档(片段通过’tox’进行练习)。

  • 添加了setup.py文档别名(安装Sphinx和repoze.sphinx.autointerface)。

项目详情


下载文件

下载适用于您平台的项目文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

btrees-6.1.tar.gz (244.7 kB 查看哈希值)

上传日期

构建分布

BTrees-6.1-cp313-cp313-win_amd64.whl (1.0 MB 查看哈希值)

上传日期 CPython 3.13 Windows x86-64

BTrees-6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB 查看哈希值)

上传日期 CPython 3.13 manylinux: glibc 2.17+ x86-64

BTrees-6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB 查看哈希值)

上传日期 CPython 3.13 manylinux: glibc 2.17+ ARM64

BTrees-6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.8 MB 查看哈希值)

上传日期 CPython 3.13 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

BTrees-6.1-cp313-cp313-macosx_11_0_arm64.whl (973.4 kB 查看哈希值)

上传于 CPython 3.13 macOS 11.0+ ARM64

BTrees-6.1-cp313-cp313-macosx_10_9_x86_64.whl (990.7 kB 查看哈希值)

上传于 CPython 3.13 macOS 10.9+ x86-64

BTrees-6.1-cp312-cp312-win_amd64.whl (1.0 MB 查看哈希值)

上传于 CPython 3.12 Windows x86-64

BTrees-6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB 查看哈希值)

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

BTrees-6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

BTrees-6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.8 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

BTrees-6.1-cp312-cp312-macosx_11_0_arm64.whl (973.3 kB 查看哈希值)

上传于 CPython 3.12 macOS 11.0+ ARM64

BTrees-6.1-cp312-cp312-macosx_10_9_x86_64.whl (990.6 kB 查看哈希值)

上传于 CPython 3.12 macOS 10.9+ x86-64

BTrees-6.1-cp311-cp311-win_amd64.whl (1.0 MB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

BTrees-6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB 查看哈希值)

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

BTrees-6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

BTrees-6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.6 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

BTrees-6.1-cp311-cp311-macosx_11_0_arm64.whl (962.7 kB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

BTrees-6.1-cp311-cp311-macosx_10_9_x86_64.whl (973.4 kB 查看哈希值)

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

BTrees-6.1-cp310-cp310-win_amd64.whl (1.0 MB 查看哈希值)

上传时间 CPython 3.10 Windows x86-64

BTrees-6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.7 MB 查看哈希值)

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

BTrees-6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB 查看哈希值)

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

BTrees-6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.5 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

BTrees-6.1-cp310-cp310-macosx_11_0_arm64.whl (962.7 kB 查看哈希值)

上传时间 CPython 3.10 macOS 11.0+ ARM64

BTrees-6.1-cp310-cp310-macosx_10_9_x86_64.whl (973.4 kB 查看哈希值)

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

BTrees-6.1-cp39-cp39-win_amd64.whl (1.0 MB 查看哈希值)

上传时间 CPython 3.9 Windows x86-64

BTrees-6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.7 MB 查看哈希值)

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

BTrees-6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

BTrees-6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.5 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

BTrees-6.1-cp39-cp39-macosx_11_0_arm64.whl (962.7 kB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

BTrees-6.1-cp39-cp39-macosx_10_9_x86_64.whl (973.4 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

BTrees-6.1-cp38-cp38-win_amd64.whl (1.0 MB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

BTrees-6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB 查看哈希值)

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

BTrees-6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

BTrees-6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (3.6 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

BTrees-6.1-cp38-cp38-macosx_11_0_arm64.whl (963.8 kB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

BTrees-6.1-cp38-cp38-macosx_10_9_x86_64.whl (975.3 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面