=============================================
``BTrees``: scalable persistent components
=============================================
.. image:: https://github.com/zopefoundation/BTrees/actions/workflows/tests.yml/badge.svg
:target: https://github.com/zopefoundation/BTrees/actions/workflows/tests.yml
.. image:: https://coveralls.io/repos/github/zopefoundation/BTrees/badge.svg?branch=master
:target: https://coveralls.io/github/zopefoundation/BTrees?branch=master
.. image:: https://readthedocs.org/projects/btrees/badge/?version=latest
:target: https://btrees.readthedocs.io/en/latest/
:alt: Documentation Status
.. image:: https://img.shields.io/pypi/v/BTrees.svg
:target: https://pypi.org/project/BTrees/
:alt: Current version on PyPI
.. image:: https://img.shields.io/pypi/pyversions/BTrees.svg
:target: https://pypi.org/project/BTrees/
:alt: Supported Python versions
This package contains a set of persistent object containers built around
a modified BTree data structure. The trees are optimized for use inside
ZODB's "optimistic concurrency" paradigm, and include explicit resolution
of conflicts detected by that mechanism.
Please see `the Sphinx documentation <https://btrees.readthedocs.io/>`_ for
further information.
==================
BTrees Changelog
==================
6.1 (2024-09-17)
================
- Add final support for Python 3.13.
6.0 (2024-05-30)
================
- Drop support for Python 3.7.
- Build Windows wheels on GHA.
5.2 (2024-02-07)
================
- Add preliminary support for Python 3.13 as of 3.13a3.
5.1 (2023-10-05)
================
- Drop using ``setup_requires`` due to constant problems on GHA.
- Add support for Python 3.12.
5.0 (2023-02-10)
================
- Build Linux binary wheels for Python 3.11.
- Drop support for Python 2.7, 3.5, 3.6.
4.11.3 (2022-11-17)
===================
- point release to rebuild full set of wheels
4.11.2 (2022-11-16)
===================
- Add support for building arm64 wheels on macOS.
4.11.1 (2022-11-09)
===================
- Fix macOS wheel build issues on GitHub Actions
- We no longer provide 32bit wheels for the Windows platform, only x86_64.
4.11.0 (2022-11-03)
===================
- Add support for Python 3.11.
4.10.1 (2022-09-12)
===================
- Disable unsafe math optimizations in C code.
(`#184 <https://github.com/zopefoundation/BTrees/pull/184>`_)
4.10.0 (2022-03-09)
===================
- Add support for Python 3.10.
4.9.2 (2021-06-09)
==================
- Fix ``fsBTree.TreeSet`` and ``fsBTree.BTree`` raising
``SystemError``. See `issue 170 <https://github.com/zopefoundation/BTrees/issues/170>`_.
- Fix all the ``fsBTree`` objects to provide the correct interfaces
and be instances of the appropriate collection ABCs. This was done
for the other modules in release 4.8.0.
- Fix the ``multiunion``, ``union``, ``intersection``, and
``difference`` functions when used with arbitrary iterables.
Previously, the iterable had to be pre-sorted, meaning only
sequences like ``list`` and ``tuple`` could reliably be used; this
was not documented though. If the iterable wasn't sorted, the
function would produce garbage output. Now, if the function detects
an arbitrary iterable, it automatically sorts a copy.
4.9.1 (2021-05-27)
==================
- Fix setting unknown class attributes on subclasses of BTrees when
using the C extension. This prevented subclasses from being
decorated with ``@component.adapter()``. See `issue 168
<https://github.com/zopefoundation/BTrees/issues/168>`_.
4.9.0 (2021-05-26)
==================
- Fix the C implementation to match the Python implementation and
allow setting custom node sizes for an entire application directly
by changing ``BTree.max_leaf_size`` and ``BTree.max_internal_size``
attributes, without having to create a new subclass. These
attributes can now also be read from the classes in the C
implementation. See `issue 166
<https://github.com/zopefoundation/BTrees/issues/166>`_.
- Add various small performance improvements for storing
zope.interface attributes on ``BTree`` and ``TreeSet`` as well as
deactivating persistent objects from this package.
4.8.0 (2021-04-14)
==================
- Make Python 2 forbid the use of type objects as keys (unless a
custom metaclass is used that implements comparison as required by
BTrees.) On Python 3, types are not orderable so they were already
forbidden, but on Python 2 types can be ordered by memory address,
which makes them unsuitable for use as keys. See `issue
<https://github.com/zopefoundation/BTrees/issues/153>`_.
- Make the ``multiunion``, ``union``, ``intersection``, and
``difference`` functions accept arbitrary Python iterables (that
iterate across the correct types). Previously, the Python
implementation allowed this, but the C implementation only allowed
objects (like ``TreeSet`` or ``Bucket``) defined in the same module
providing the function. See `issue 24
<https://github.com/zopefoundation/BTrees/issues/24>`_.
- Fix persistency bug in the Python version
(`#118 <https://github.com/zopefoundation/BTrees/issues/118>`_).
- Fix ``Tree.__setstate__`` to no longer accept children besides
tree or bucket types to prevent crashes. See `PR 143
<https://github.com/zopefoundation/BTrees/pull/143>`_ for details.
- Make BTrees, TreeSet, Set and Buckets implements the ``__and__``,
``__or__`` and ``__sub__`` special methods as shortcuts for
``BTrees.Interfaces.IMerge.intersection``,
``BTrees.Interfaces.IMerge.union`` and
``BTrees.Interfaces.IMerge.difference``.
- Add support for Python 3.9.
- Build and upload aarch64 wheels.
- Make a value of ``0`` in the ``PURE_PYTHON`` environment variable
require the C extensions (except on PyPy). Previously, and if this
variable is unset, missing or unusable C extensions would be
silently ignored. With this variable set to ``0``, an
``ImportError`` will be raised if the C extensions are unavailable.
See `issue 156
<https://github.com/zopefoundation/BTrees/issues/156>`_.
- Make the BTree objects (``BTree``, ``TreeSet``, ``Set``, ``Bucket``)
of each module actually provide the interfaces defined in
``BTrees.Interfaces``. Previously, they provided no interfaces.
- Make all the BTree and Bucket objects instances of
``collections.abc.MutableMapping`` (that is, ``isinstance(btree,
MutableMapping)`` is now true; no actual inheritance has changed).
As part of this, they now provide the ``popitem()`` method.
- Make all the TreeSet and Set objects instances of
``collections.abc.MutableSet`` (that is, ``isinstance(tree_set,
MutableSet)`` is now true; no actual inheritance has changed).
As part of this, they now provide several more methods, including
``isdisjoint``, ``discard``, and ``pop``, and support in-place
mutation operators such as ``tree_set |= other``, ``tree_set +=
other``, ``tree_set -= other`` and ``tree_set ^= other``. See `issue
121 <https://github.com/zopefoundation/BTrees/issues/121>`_.
- Update the definitions of ``ISized`` and ``IReadSequence`` to simply
be ``zope.interface.common.collections.ISized`` and
``zope.interface.common.sequence.IMinimalSequence`` respectively.
- Remove the ``__nonzero__`` interface method from ``ICollection``. No
objects actually implemented such a method; instead, the boolean value
is typically taken from ``__len__``.
- Adjust the definition of ``ISet`` to produce the same resolution
order under the C3 and legacy orderings. This means that the legacy
order has changed slightly, but that this package emits no warnings
when ``ZOPE_INTERFACE_LOG_CHANGED_IRO=1``. Note that the legacy
order was not being used for these objects because the C3 ordering
was still consistent; it could only be obtained using
``ZOPE_INTERFACE_USE_LEGACY_IRO=1``. See `PR 159
<https://github.com/zopefoundation/BTrees/pull/159>`_ for all the
interface updates.
- Fix the ``get``, ``setdefault`` and ``pop`` methods, as well as the
``in`` operator, to not suppress ``POSKeyError`` if the object or
subobjects are corrupted. Previously, such errors were logged by
ZODB, but not propagated. See `issue 161
<https://github.com/zopefoundation/BTrees/issues/161>`_.
4.7.2 (2020-04-07)
==================
- Fix more cases of C and Python inconsistency. The C implementation
now behaves like the Python implementation when it comes to integer
overflow for the integer keys for ``in``, ``get`` and ``has_key``.
Now they return False, the default value, and False, respectively in
both versions if the tested value would overflow or underflow.
Previously, the C implementation would raise ``OverflowError`` or
``KeyError``, while the Python implementation functioned as
expected. See `issue 140
<https://github.com/zopefoundation/BTrees/issues/140>`_.
.. note::
The unspecified true return values of ``has_key``
have changed.
4.7.1 (2020-03-22)
==================
- Fix the definitions of ``__all__`` in modules. In 4.7.0, they
incorrectly left out names. See `PR 132
<https://github.com/zopefoundation/BTrees/pull/132>`_.
- Ensure the interface resolution order of all objects is consistent.
See `issue 137 <https://github.com/zopefoundation/BTrees/issues/137>`_.
4.7.0 (2020-03-17)
==================
- Add unsigned variants of the trees. These use the initial "U" for
32-bit data and "Q" for 64-bit data (for "quad", which is similar to
what the C ``printf`` function uses and the Python struct module
uses).
- Fix the value for ``BTrees.OIBTree.using64bits`` when using the pure Python
implementation (PyPy and when ``PURE_PYTHON`` is in the environment).
- Make the errors that are raised when values are out of range more
consistent between Python 2 and Python 3 and between 32-bit and
64-bit variants.
- Make the Bucket types consistent with the BTree types as updated in
versions 4.3.2: Querying for keys with default comparisons or that
are not integers no longer raises ``TypeError``.
4.6.1 (2019-11-07)
==================
- Add support for Python 3.8.
4.6.0 (2019-07-30)
==================
- Drop support for Python 3.4.
- Fix tests against persistent 4.4.
- Stop accidentally installing the 'terryfy' package in macOS wheels.
See `issue 98
<https://github.com/zopefoundation/BTrees/issues/98>`_.
- Fix segmentation fault in ``bucket_repr()``. See
`issue 106 <https://github.com/zopefoundation/BTrees/issues/106>`_.
4.5.1 (2018-08-09)
==================
- Produce binary wheels for Python 3.7.
- Use pyproject.toml to specify build dependencies. This requires pip
18 or later to build from source.
4.5.0 (2018-04-23)
==================
- Add support for Python 3.6 and 3.7.
- Drop support for Python 3.3.
- Raise an ``ImportError`` consistently on Python 3 if the C extension for
BTrees is used but the ``persistent`` C extension is not available.
Previously this could result in an odd ``AttributeError``. See
https://github.com/zopefoundation/BTrees/pull/55
- Fix the possibility of a rare crash in the C extension when
deallocating items. See https://github.com/zopefoundation/BTrees/issues/75
- Respect the ``PURE_PYTHON`` environment variable at runtime even if
the C extensions are available. See
https://github.com/zopefoundation/BTrees/issues/78
- Always attempt to build the C extensions, but make their success
optional.
- Fix a ``DeprecationWarning`` that could come from I and L objects in
Python 2 in pure-Python mode. See https://github.com/zopefoundation/BTrees/issues/79
4.4.1 (2017-01-24)
==================
Fixed a packaging bug that caused extra files to be included (some of
which caused problems in some platforms).
4.4.0 (2017-01-11)
==================
- Allow None as a special key (sorted smaller than all others).
This is a bit of a return to BTrees 3 behavior in that Nones are
allowed as keys again. Other objects with default ordering are
still not allowed as keys.
4.3.2 (2017-01-05)
==================
- Make the CPython implementation consistent with the pure-Python
implementation and only check object keys for default comparison
when setting keys. In Python 2 this makes it possible to remove keys
that were added using a less restrictive version of BTrees. (In
Python 3 keys that are unorderable still cannot be removed.)
Likewise, all versions can unpickle trees that already had such
keys. See: https://github.com/zopefoundation/BTrees/issues/53 and
https://github.com/zopefoundation/BTrees/issues/51
- Make the Python implementation consistent with the CPython
implementation and check object key identity before checking
equality and performing comparisons. This can allow fixing trees
that have keys that now have broken comparison functions. See
https://github.com/zopefoundation/BTrees/issues/50
- Make the CPython implementation consistent with the pure-Python
implementation and no longer raise ``TypeError`` for an object key
(in object-keyed trees) with default comparison on ``__getitem__``,
``get`` or ``in`` operations. Instead, the results will be a
``KeyError``, the default value, and ``False``, respectively.
Previously, CPython raised a ``TypeError`` in those cases, while the
Python implementation behaved as specified.
Likewise, non-integer keys in integer-keyed trees
will raise ``KeyError``, return the default and return ``False``,
respectively, in both implementations. Previously, pure-Python
raised a ``KeyError``, returned the default, and raised a
``TypeError``, while CPython raised ``TypeError`` in all three cases.
4.3.1 (2016-05-16)
==================
- Packaging: fix password used to automate wheel creation on Travis.
4.3.0 (2016-05-10)
==================
- Fix unexpected ``OverflowError`` when passing 64bit values to long
keys / values on Win64. See:
https://github.com/zopefoundation/BTrees/issues/32
- When testing ``PURE_PYTHON`` environments under ``tox``, avoid poisoning
the user's global wheel cache.
- Ensure that the pure-Python implementation, used on PyPy and when a C
compiler isn't available for CPython, pickles identically to the C
version. Unpickling will choose the best available implementation.
This change prevents interoperability problems and database corruption if
both implementations are in use. While it is no longer possible to
pickle a Python implementation and have it unpickle to the Python
implementation if the C implementation is available, existing Python
pickles will still unpickle to the Python implementation (until
pickled again). See:
https://github.com/zopefoundation/BTrees/issues/19
- Avoid creating invalid objects when unpickling empty BTrees in a pure-Python
environment.
- Drop support for Python 2.6 and 3.2.
4.2.0 (2015-11-13)
==================
- Add support for Python 3.5.
4.1.4 (2015-06-02)
==================
- Ensure that pure-Python Bucket and Set objects have a human readable
``__repr__`` like the C versions.
4.1.3 (2015-05-19)
==================
- Fix ``_p_changed`` when removing items from small pure-Python
BTrees/TreeSets and when adding items to small pure-Python Sets. See:
https://github.com/zopefoundation/BTrees/issues/13
4.1.2 (2015-04-07)
==================
- Suppress testing 64-bit values in OLBTrees on 32 bit machines.
See: https://github.com/zopefoundation/BTrees/issues/9
- Fix ``_p_changed`` when adding items to small pure-Python
BTrees/TreeSets. See:
https://github.com/zopefoundation/BTrees/issues/11
4.1.1 (2014-12-27)
==================
- Accomodate long values in pure-Python OLBTrees.
4.1.0 (2014-12-26)
==================
- Add support for PyPy and PyPy3.
- Add support for Python 3.4.
- BTree subclasses can define ``max_leaf_size`` or ``max_internal_size``
to control maximum sizes for Bucket/Set and BTree/TreeSet nodes.
- Detect integer overflow on 32-bit machines correctly under Python 3.
- Update pure-Python and C trees / sets to accept explicit None to indicate
max / min value for ``minKey``, ``maxKey``. (PR #3)
- Update pure-Python trees / sets to accept explicit None to indicate
open ranges for ``keys``, ``values``, ``items``. (PR #3)
4.0.8 (2013-05-25)
==================
- Fix value-based comparison for objects under Py3k: addresses invalid
merges of ``[OLI]OBTrees/OBuckets``.
- Ensure that pure-Python implementation of ``OOBTree.byValue`` matches
semantics (reversed-sort) of C implementation.
4.0.7 (2013-05-22)
==================
- Issue #2: compilation error on 32-bit mode of OS/X.
- Test ``PURE_PYTHON`` environment variable support: if set, the C
extensions will not be built, imported, or tested.
4.0.6 (2013-05-14)
==================
- Changed the ``ZODB`` extra to require only the real ``ZODB`` package,
rather than the ``ZODB3`` metapackage: depending on the version used,
the metapackage could pull in stale versions of **this** package and
``persistent``.
- Fixed Python version check in ``setup.py``.
4.0.5 (2013-01-15)
==================
- Fit the ``repr`` of bucket objects, which could contain garbage
characters.
4.0.4 (2013-01-12)
==================
- Emulate the (private) iterators used by the C extension modules from
pure Python. This change is "cosmetic" only: it prevents the ZCML
``zope.app.security:permission.zcml`` from failing. The emulated
classes are **not** functional, and should be considered implementation
details.
- Accomodate buildout to the fact that we no longer bundle a copy
of 'persistent.h'.
- Fix test failures on Windows: no longer rely on overflows from
``sys.maxint``.
4.0.3 (2013-01-04)
==================
- Added ``setup_requires==['persistent']``.
4.0.2 (2013-01-03)
==================
- Updated Trove classifiers.
- Added explicit support for Python 3.2, Python 3.3, and PyPy.
Note that the C extensions are not (yet) available on PyPy.
- Python reference implementations now tested separately from the C
verions on all platforms.
- 100% unit test coverage.
4.0.1 (2012-10-21)
==================
- Provide local fallback for persistent C header inclusion if the
persistent distribution isn't installed. This makes the winbot happy.
4.0.0 (2012-10-20)
==================
Platform Changes
----------------
- Dropped support for Python < 2.6.
- Factored ``BTrees`` as a separate distribution.
Testing Changes
---------------
- All covered platforms tested under ``tox``.
- Added support for continuous integration using ``tox`` and ``jenkins``.
- Added ``setup.py dev`` alias (installs ``nose`` and ``coverage``).
- Dropped dependency on ``zope.testing`` / ``zope.testrunner``: tests now
run with ``setup.py test``.
Documentation Changes
---------------------
- Added API reference, generated via Spinx' autodoc.
- Added Sphinx documentation based on ZODB Guide (snippets are exercised
via 'tox').
- Added ``setup.py docs`` alias (installs ``Sphinx`` and
``repoze.sphinx.autointerface``).
Raw data
{
"_id": null,
"home_page": "https://github.com/zopefoundation/BTrees",
"name": "BTrees",
"maintainer": null,
"docs_url": "https://pythonhosted.org/BTrees/",
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": null,
"author": "Zope Foundation",
"author_email": "zodb-dev@zope.org",
"download_url": "https://files.pythonhosted.org/packages/4b/bd/5dd0c5bd5ac2d518c18bc3f4746028f931d77b4d4b83cbcb8c4271ab465b/btrees-6.1.tar.gz",
"platform": "any",
"description": "=============================================\n ``BTrees``: scalable persistent components\n=============================================\n\n.. image:: https://github.com/zopefoundation/BTrees/actions/workflows/tests.yml/badge.svg\n :target: https://github.com/zopefoundation/BTrees/actions/workflows/tests.yml\n\n.. image:: https://coveralls.io/repos/github/zopefoundation/BTrees/badge.svg?branch=master\n :target: https://coveralls.io/github/zopefoundation/BTrees?branch=master\n\n.. image:: https://readthedocs.org/projects/btrees/badge/?version=latest\n :target: https://btrees.readthedocs.io/en/latest/\n :alt: Documentation Status\n\n.. image:: https://img.shields.io/pypi/v/BTrees.svg\n :target: https://pypi.org/project/BTrees/\n :alt: Current version on PyPI\n\n.. image:: https://img.shields.io/pypi/pyversions/BTrees.svg\n :target: https://pypi.org/project/BTrees/\n :alt: Supported Python versions\n\n\nThis package contains a set of persistent object containers built around\na modified BTree data structure. The trees are optimized for use inside\nZODB's \"optimistic concurrency\" paradigm, and include explicit resolution\nof conflicts detected by that mechanism.\n\nPlease see `the Sphinx documentation <https://btrees.readthedocs.io/>`_ for\nfurther information.\n\n\n==================\n BTrees Changelog\n==================\n\n6.1 (2024-09-17)\n================\n\n- Add final support for Python 3.13.\n\n\n6.0 (2024-05-30)\n================\n\n- Drop support for Python 3.7.\n\n- Build Windows wheels on GHA.\n\n\n5.2 (2024-02-07)\n================\n\n- Add preliminary support for Python 3.13 as of 3.13a3.\n\n5.1 (2023-10-05)\n================\n\n- Drop using ``setup_requires`` due to constant problems on GHA.\n\n- Add support for Python 3.12.\n\n\n5.0 (2023-02-10)\n================\n\n- Build Linux binary wheels for Python 3.11.\n\n- Drop support for Python 2.7, 3.5, 3.6.\n\n\n4.11.3 (2022-11-17)\n===================\n\n- point release to rebuild full set of wheels\n\n\n4.11.2 (2022-11-16)\n===================\n\n- Add support for building arm64 wheels on macOS.\n\n\n4.11.1 (2022-11-09)\n===================\n\n- Fix macOS wheel build issues on GitHub Actions\n\n- We no longer provide 32bit wheels for the Windows platform, only x86_64.\n\n\n4.11.0 (2022-11-03)\n===================\n\n- Add support for Python 3.11.\n\n\n4.10.1 (2022-09-12)\n===================\n\n- Disable unsafe math optimizations in C code.\n (`#184 <https://github.com/zopefoundation/BTrees/pull/184>`_)\n\n\n4.10.0 (2022-03-09)\n===================\n\n- Add support for Python 3.10.\n\n\n4.9.2 (2021-06-09)\n==================\n\n- Fix ``fsBTree.TreeSet`` and ``fsBTree.BTree`` raising\n ``SystemError``. See `issue 170 <https://github.com/zopefoundation/BTrees/issues/170>`_.\n\n- Fix all the ``fsBTree`` objects to provide the correct interfaces\n and be instances of the appropriate collection ABCs. This was done\n for the other modules in release 4.8.0.\n\n- Fix the ``multiunion``, ``union``, ``intersection``, and\n ``difference`` functions when used with arbitrary iterables.\n Previously, the iterable had to be pre-sorted, meaning only\n sequences like ``list`` and ``tuple`` could reliably be used; this\n was not documented though. If the iterable wasn't sorted, the\n function would produce garbage output. Now, if the function detects\n an arbitrary iterable, it automatically sorts a copy.\n\n4.9.1 (2021-05-27)\n==================\n\n- Fix setting unknown class attributes on subclasses of BTrees when\n using the C extension. This prevented subclasses from being\n decorated with ``@component.adapter()``. See `issue 168\n <https://github.com/zopefoundation/BTrees/issues/168>`_.\n\n\n4.9.0 (2021-05-26)\n==================\n\n- Fix the C implementation to match the Python implementation and\n allow setting custom node sizes for an entire application directly\n by changing ``BTree.max_leaf_size`` and ``BTree.max_internal_size``\n attributes, without having to create a new subclass. These\n attributes can now also be read from the classes in the C\n implementation. See `issue 166\n <https://github.com/zopefoundation/BTrees/issues/166>`_.\n\n- Add various small performance improvements for storing\n zope.interface attributes on ``BTree`` and ``TreeSet`` as well as\n deactivating persistent objects from this package.\n\n4.8.0 (2021-04-14)\n==================\n\n- Make Python 2 forbid the use of type objects as keys (unless a\n custom metaclass is used that implements comparison as required by\n BTrees.) On Python 3, types are not orderable so they were already\n forbidden, but on Python 2 types can be ordered by memory address,\n which makes them unsuitable for use as keys. See `issue\n <https://github.com/zopefoundation/BTrees/issues/153>`_.\n\n- Make the ``multiunion``, ``union``, ``intersection``, and\n ``difference`` functions accept arbitrary Python iterables (that\n iterate across the correct types). Previously, the Python\n implementation allowed this, but the C implementation only allowed\n objects (like ``TreeSet`` or ``Bucket``) defined in the same module\n providing the function. See `issue 24\n <https://github.com/zopefoundation/BTrees/issues/24>`_.\n\n- Fix persistency bug in the Python version\n (`#118 <https://github.com/zopefoundation/BTrees/issues/118>`_).\n\n- Fix ``Tree.__setstate__`` to no longer accept children besides\n tree or bucket types to prevent crashes. See `PR 143\n <https://github.com/zopefoundation/BTrees/pull/143>`_ for details.\n\n- Make BTrees, TreeSet, Set and Buckets implements the ``__and__``,\n ``__or__`` and ``__sub__`` special methods as shortcuts for\n ``BTrees.Interfaces.IMerge.intersection``,\n ``BTrees.Interfaces.IMerge.union`` and\n ``BTrees.Interfaces.IMerge.difference``.\n\n- Add support for Python 3.9.\n\n- Build and upload aarch64 wheels.\n\n- Make a value of ``0`` in the ``PURE_PYTHON`` environment variable\n require the C extensions (except on PyPy). Previously, and if this\n variable is unset, missing or unusable C extensions would be\n silently ignored. With this variable set to ``0``, an\n ``ImportError`` will be raised if the C extensions are unavailable.\n See `issue 156\n <https://github.com/zopefoundation/BTrees/issues/156>`_.\n\n- Make the BTree objects (``BTree``, ``TreeSet``, ``Set``, ``Bucket``)\n of each module actually provide the interfaces defined in\n ``BTrees.Interfaces``. Previously, they provided no interfaces.\n\n- Make all the BTree and Bucket objects instances of\n ``collections.abc.MutableMapping`` (that is, ``isinstance(btree,\n MutableMapping)`` is now true; no actual inheritance has changed).\n As part of this, they now provide the ``popitem()`` method.\n\n- Make all the TreeSet and Set objects instances of\n ``collections.abc.MutableSet`` (that is, ``isinstance(tree_set,\n MutableSet)`` is now true; no actual inheritance has changed).\n As part of this, they now provide several more methods, including\n ``isdisjoint``, ``discard``, and ``pop``, and support in-place\n mutation operators such as ``tree_set |= other``, ``tree_set +=\n other``, ``tree_set -= other`` and ``tree_set ^= other``. See `issue\n 121 <https://github.com/zopefoundation/BTrees/issues/121>`_.\n\n- Update the definitions of ``ISized`` and ``IReadSequence`` to simply\n be ``zope.interface.common.collections.ISized`` and\n ``zope.interface.common.sequence.IMinimalSequence`` respectively.\n\n- Remove the ``__nonzero__`` interface method from ``ICollection``. No\n objects actually implemented such a method; instead, the boolean value\n is typically taken from ``__len__``.\n\n- Adjust the definition of ``ISet`` to produce the same resolution\n order under the C3 and legacy orderings. This means that the legacy\n order has changed slightly, but that this package emits no warnings\n when ``ZOPE_INTERFACE_LOG_CHANGED_IRO=1``. Note that the legacy\n order was not being used for these objects because the C3 ordering\n was still consistent; it could only be obtained using\n ``ZOPE_INTERFACE_USE_LEGACY_IRO=1``. See `PR 159\n <https://github.com/zopefoundation/BTrees/pull/159>`_ for all the\n interface updates.\n\n- Fix the ``get``, ``setdefault`` and ``pop`` methods, as well as the\n ``in`` operator, to not suppress ``POSKeyError`` if the object or\n subobjects are corrupted. Previously, such errors were logged by\n ZODB, but not propagated. See `issue 161\n <https://github.com/zopefoundation/BTrees/issues/161>`_.\n\n4.7.2 (2020-04-07)\n==================\n\n- Fix more cases of C and Python inconsistency. The C implementation\n now behaves like the Python implementation when it comes to integer\n overflow for the integer keys for ``in``, ``get`` and ``has_key``.\n Now they return False, the default value, and False, respectively in\n both versions if the tested value would overflow or underflow.\n Previously, the C implementation would raise ``OverflowError`` or\n ``KeyError``, while the Python implementation functioned as\n expected. See `issue 140\n <https://github.com/zopefoundation/BTrees/issues/140>`_.\n\n .. note::\n The unspecified true return values of ``has_key``\n have changed.\n\n\n4.7.1 (2020-03-22)\n==================\n\n- Fix the definitions of ``__all__`` in modules. In 4.7.0, they\n incorrectly left out names. See `PR 132\n <https://github.com/zopefoundation/BTrees/pull/132>`_.\n\n- Ensure the interface resolution order of all objects is consistent.\n See `issue 137 <https://github.com/zopefoundation/BTrees/issues/137>`_.\n\n4.7.0 (2020-03-17)\n==================\n\n- Add unsigned variants of the trees. These use the initial \"U\" for\n 32-bit data and \"Q\" for 64-bit data (for \"quad\", which is similar to\n what the C ``printf`` function uses and the Python struct module\n uses).\n\n- Fix the value for ``BTrees.OIBTree.using64bits`` when using the pure Python\n implementation (PyPy and when ``PURE_PYTHON`` is in the environment).\n\n- Make the errors that are raised when values are out of range more\n consistent between Python 2 and Python 3 and between 32-bit and\n 64-bit variants.\n\n- Make the Bucket types consistent with the BTree types as updated in\n versions 4.3.2: Querying for keys with default comparisons or that\n are not integers no longer raises ``TypeError``.\n\n4.6.1 (2019-11-07)\n==================\n\n- Add support for Python 3.8.\n\n\n4.6.0 (2019-07-30)\n==================\n\n- Drop support for Python 3.4.\n\n- Fix tests against persistent 4.4.\n\n- Stop accidentally installing the 'terryfy' package in macOS wheels.\n See `issue 98\n <https://github.com/zopefoundation/BTrees/issues/98>`_.\n\n- Fix segmentation fault in ``bucket_repr()``. See\n `issue 106 <https://github.com/zopefoundation/BTrees/issues/106>`_.\n\n\n4.5.1 (2018-08-09)\n==================\n\n- Produce binary wheels for Python 3.7.\n\n- Use pyproject.toml to specify build dependencies. This requires pip\n 18 or later to build from source.\n\n\n4.5.0 (2018-04-23)\n==================\n\n- Add support for Python 3.6 and 3.7.\n- Drop support for Python 3.3.\n- Raise an ``ImportError`` consistently on Python 3 if the C extension for\n BTrees is used but the ``persistent`` C extension is not available.\n Previously this could result in an odd ``AttributeError``. See\n https://github.com/zopefoundation/BTrees/pull/55\n- Fix the possibility of a rare crash in the C extension when\n deallocating items. See https://github.com/zopefoundation/BTrees/issues/75\n- Respect the ``PURE_PYTHON`` environment variable at runtime even if\n the C extensions are available. See\n https://github.com/zopefoundation/BTrees/issues/78\n- Always attempt to build the C extensions, but make their success\n optional.\n- Fix a ``DeprecationWarning`` that could come from I and L objects in\n Python 2 in pure-Python mode. See https://github.com/zopefoundation/BTrees/issues/79\n\n4.4.1 (2017-01-24)\n==================\n\nFixed a packaging bug that caused extra files to be included (some of\nwhich caused problems in some platforms).\n\n4.4.0 (2017-01-11)\n==================\n\n- Allow None as a special key (sorted smaller than all others).\n\n This is a bit of a return to BTrees 3 behavior in that Nones are\n allowed as keys again. Other objects with default ordering are\n still not allowed as keys.\n\n4.3.2 (2017-01-05)\n==================\n\n- Make the CPython implementation consistent with the pure-Python\n implementation and only check object keys for default comparison\n when setting keys. In Python 2 this makes it possible to remove keys\n that were added using a less restrictive version of BTrees. (In\n Python 3 keys that are unorderable still cannot be removed.)\n Likewise, all versions can unpickle trees that already had such\n keys. See: https://github.com/zopefoundation/BTrees/issues/53 and\n https://github.com/zopefoundation/BTrees/issues/51\n\n- Make the Python implementation consistent with the CPython\n implementation and check object key identity before checking\n equality and performing comparisons. This can allow fixing trees\n that have keys that now have broken comparison functions. See\n https://github.com/zopefoundation/BTrees/issues/50\n\n- Make the CPython implementation consistent with the pure-Python\n implementation and no longer raise ``TypeError`` for an object key\n (in object-keyed trees) with default comparison on ``__getitem__``,\n ``get`` or ``in`` operations. Instead, the results will be a\n ``KeyError``, the default value, and ``False``, respectively.\n Previously, CPython raised a ``TypeError`` in those cases, while the\n Python implementation behaved as specified.\n\n Likewise, non-integer keys in integer-keyed trees\n will raise ``KeyError``, return the default and return ``False``,\n respectively, in both implementations. Previously, pure-Python\n raised a ``KeyError``, returned the default, and raised a\n ``TypeError``, while CPython raised ``TypeError`` in all three cases.\n\n4.3.1 (2016-05-16)\n==================\n\n- Packaging: fix password used to automate wheel creation on Travis.\n\n4.3.0 (2016-05-10)\n==================\n\n- Fix unexpected ``OverflowError`` when passing 64bit values to long\n keys / values on Win64. See:\n https://github.com/zopefoundation/BTrees/issues/32\n\n- When testing ``PURE_PYTHON`` environments under ``tox``, avoid poisoning\n the user's global wheel cache.\n\n- Ensure that the pure-Python implementation, used on PyPy and when a C\n compiler isn't available for CPython, pickles identically to the C\n version. Unpickling will choose the best available implementation.\n This change prevents interoperability problems and database corruption if\n both implementations are in use. While it is no longer possible to\n pickle a Python implementation and have it unpickle to the Python\n implementation if the C implementation is available, existing Python\n pickles will still unpickle to the Python implementation (until\n pickled again). See:\n https://github.com/zopefoundation/BTrees/issues/19\n\n- Avoid creating invalid objects when unpickling empty BTrees in a pure-Python\n environment.\n\n- Drop support for Python 2.6 and 3.2.\n\n4.2.0 (2015-11-13)\n==================\n\n- Add support for Python 3.5.\n\n4.1.4 (2015-06-02)\n==================\n\n- Ensure that pure-Python Bucket and Set objects have a human readable\n ``__repr__`` like the C versions.\n\n4.1.3 (2015-05-19)\n==================\n\n- Fix ``_p_changed`` when removing items from small pure-Python\n BTrees/TreeSets and when adding items to small pure-Python Sets. See:\n https://github.com/zopefoundation/BTrees/issues/13\n\n\n4.1.2 (2015-04-07)\n==================\n\n- Suppress testing 64-bit values in OLBTrees on 32 bit machines.\n See: https://github.com/zopefoundation/BTrees/issues/9\n\n- Fix ``_p_changed`` when adding items to small pure-Python\n BTrees/TreeSets. See:\n https://github.com/zopefoundation/BTrees/issues/11\n\n\n4.1.1 (2014-12-27)\n==================\n\n- Accomodate long values in pure-Python OLBTrees.\n\n\n4.1.0 (2014-12-26)\n==================\n\n- Add support for PyPy and PyPy3.\n\n- Add support for Python 3.4.\n\n- BTree subclasses can define ``max_leaf_size`` or ``max_internal_size``\n to control maximum sizes for Bucket/Set and BTree/TreeSet nodes.\n\n- Detect integer overflow on 32-bit machines correctly under Python 3.\n\n- Update pure-Python and C trees / sets to accept explicit None to indicate\n max / min value for ``minKey``, ``maxKey``. (PR #3)\n\n- Update pure-Python trees / sets to accept explicit None to indicate\n open ranges for ``keys``, ``values``, ``items``. (PR #3)\n\n\n4.0.8 (2013-05-25)\n==================\n\n- Fix value-based comparison for objects under Py3k: addresses invalid\n merges of ``[OLI]OBTrees/OBuckets``.\n\n- Ensure that pure-Python implementation of ``OOBTree.byValue`` matches\n semantics (reversed-sort) of C implementation.\n\n\n4.0.7 (2013-05-22)\n==================\n\n- Issue #2: compilation error on 32-bit mode of OS/X.\n\n- Test ``PURE_PYTHON`` environment variable support: if set, the C\n extensions will not be built, imported, or tested.\n\n\n4.0.6 (2013-05-14)\n==================\n\n- Changed the ``ZODB`` extra to require only the real ``ZODB`` package,\n rather than the ``ZODB3`` metapackage: depending on the version used,\n the metapackage could pull in stale versions of **this** package and\n ``persistent``.\n\n- Fixed Python version check in ``setup.py``.\n\n\n4.0.5 (2013-01-15)\n==================\n\n- Fit the ``repr`` of bucket objects, which could contain garbage\n characters.\n\n\n4.0.4 (2013-01-12)\n==================\n\n- Emulate the (private) iterators used by the C extension modules from\n pure Python. This change is \"cosmetic\" only: it prevents the ZCML\n ``zope.app.security:permission.zcml`` from failing. The emulated\n classes are **not** functional, and should be considered implementation\n details.\n\n- Accomodate buildout to the fact that we no longer bundle a copy\n of 'persistent.h'.\n\n- Fix test failures on Windows: no longer rely on overflows from\n ``sys.maxint``.\n\n\n4.0.3 (2013-01-04)\n==================\n\n- Added ``setup_requires==['persistent']``.\n\n\n4.0.2 (2013-01-03)\n==================\n\n- Updated Trove classifiers.\n\n- Added explicit support for Python 3.2, Python 3.3, and PyPy.\n Note that the C extensions are not (yet) available on PyPy.\n\n- Python reference implementations now tested separately from the C\n verions on all platforms.\n\n- 100% unit test coverage.\n\n\n4.0.1 (2012-10-21)\n==================\n\n- Provide local fallback for persistent C header inclusion if the\n persistent distribution isn't installed. This makes the winbot happy.\n\n\n4.0.0 (2012-10-20)\n==================\n\nPlatform Changes\n----------------\n\n- Dropped support for Python < 2.6.\n\n- Factored ``BTrees`` as a separate distribution.\n\nTesting Changes\n---------------\n\n- All covered platforms tested under ``tox``.\n\n- Added support for continuous integration using ``tox`` and ``jenkins``.\n\n- Added ``setup.py dev`` alias (installs ``nose`` and ``coverage``).\n\n- Dropped dependency on ``zope.testing`` / ``zope.testrunner``: tests now\n run with ``setup.py test``.\n\nDocumentation Changes\n---------------------\n\n- Added API reference, generated via Spinx' autodoc.\n\n- Added Sphinx documentation based on ZODB Guide (snippets are exercised\n via 'tox').\n\n- Added ``setup.py docs`` alias (installs ``Sphinx`` and\n ``repoze.sphinx.autointerface``).\n",
"bugtrack_url": null,
"license": "ZPL 2.1",
"summary": "Scalable persistent object containers",
"version": "6.1",
"project_urls": {
"Documentation": "https://btrees.readthedocs.io",
"Homepage": "https://github.com/zopefoundation/BTrees",
"Issue Tracker": "https://github.com/zopefoundation/BTrees/issues",
"Sources": "https://github.com/zopefoundation/BTrees"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3576c672b2366d4cbaa3b017ccac059a0c0ef44d65fe5126affa3824cbdb7db4",
"md5": "a70dcdc8ae8bbae867cd5868127e2b31",
"sha256": "8b08497fe1dd2b4fac107bd79ab052809f58f5d4d2f9ca08d3548e831d21a841"
},
"downloads": -1,
"filename": "BTrees-6.1-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "a70dcdc8ae8bbae867cd5868127e2b31",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 973375,
"upload_time": "2024-09-17T11:58:27",
"upload_time_iso_8601": "2024-09-17T11:58:27.824315Z",
"url": "https://files.pythonhosted.org/packages/35/76/c672b2366d4cbaa3b017ccac059a0c0ef44d65fe5126affa3824cbdb7db4/BTrees-6.1-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a7602a89cf32b5d77f16f8f2d0465544b2724f4892f4724ef925464bece753d3",
"md5": "3e9673c140ec213226f210a5f73eefed",
"sha256": "f50275aa22e9bb94701c9ffad59b7cd0104237dee24e840e1a8cf83c5a904184"
},
"downloads": -1,
"filename": "BTrees-6.1-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "3e9673c140ec213226f210a5f73eefed",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 962664,
"upload_time": "2024-09-17T11:58:31",
"upload_time_iso_8601": "2024-09-17T11:58:31.026782Z",
"url": "https://files.pythonhosted.org/packages/a7/60/2a89cf32b5d77f16f8f2d0465544b2724f4892f4724ef925464bece753d3/BTrees-6.1-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9b3b0a5f94ab776d2186ed0bcd580096a2cd9acda493774d8e63f7aea6ab44c3",
"md5": "6c8ab0debcdebc15dd8586a4f7de1f96",
"sha256": "e96ff8762c9b4d82631c3a6c4cdde348f935a0aaeb0473c14c5bc16c20a03ede"
},
"downloads": -1,
"filename": "BTrees-6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "6c8ab0debcdebc15dd8586a4f7de1f96",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 3739508,
"upload_time": "2024-09-17T12:07:05",
"upload_time_iso_8601": "2024-09-17T12:07:05.967354Z",
"url": "https://files.pythonhosted.org/packages/9b/3b/0a5f94ab776d2186ed0bcd580096a2cd9acda493774d8e63f7aea6ab44c3/BTrees-6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "928a0537b3096b515874554f7d1fded065e550b114e729d5a439b4d369c2c618",
"md5": "c526f89ea062cde4c9abdcdb16e2e289",
"sha256": "da7b9718354e34d4c4ace9f4f784e553041b8f7667017ca36286ba7f3544df8f"
},
"downloads": -1,
"filename": "BTrees-6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "c526f89ea062cde4c9abdcdb16e2e289",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 3500730,
"upload_time": "2024-09-17T12:07:51",
"upload_time_iso_8601": "2024-09-17T12:07:51.924963Z",
"url": "https://files.pythonhosted.org/packages/92/8a/0537b3096b515874554f7d1fded065e550b114e729d5a439b4d369c2c618/BTrees-6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a9960184b1afa2aac8bcfc55734a0fa06d1f4d52c623b6f2c7dcb756f3d82c72",
"md5": "685048741a1c1b4a0ddf2d6e248aa9a6",
"sha256": "ee2a98f67d89f1e0eb1c17c9a8d0088efcdd283fb6a7f9fc3d6758a2211e5a28"
},
"downloads": -1,
"filename": "BTrees-6.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "685048741a1c1b4a0ddf2d6e248aa9a6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1033371,
"upload_time": "2024-09-17T11:59:02",
"upload_time_iso_8601": "2024-09-17T11:59:02.305570Z",
"url": "https://files.pythonhosted.org/packages/a9/96/0184b1afa2aac8bcfc55734a0fa06d1f4d52c623b6f2c7dcb756f3d82c72/BTrees-6.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2d41f6ea3e5f83b20bee18e3257d5d9ef3e53f678e217bfff980032cee7af385",
"md5": "0c7810ef6d7e6bc511b6748ed3f5e52b",
"sha256": "2eb3c838e18d353a0c35b09e679bc0c939d76823983f86bbc87356fb3d4786e7"
},
"downloads": -1,
"filename": "BTrees-6.1-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "0c7810ef6d7e6bc511b6748ed3f5e52b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 973373,
"upload_time": "2024-09-17T11:58:23",
"upload_time_iso_8601": "2024-09-17T11:58:23.723810Z",
"url": "https://files.pythonhosted.org/packages/2d/41/f6ea3e5f83b20bee18e3257d5d9ef3e53f678e217bfff980032cee7af385/BTrees-6.1-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8326cf8fd8b98c773e22a835eafa7ba26075911961d31e153b22c7fd810fb554",
"md5": "130e631ba8add70bcd22cb7198e36d3a",
"sha256": "8b084410ae05aeb0285487f9bbd5aa3521aa2acb852d4df6bd45a77f9786b816"
},
"downloads": -1,
"filename": "BTrees-6.1-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "130e631ba8add70bcd22cb7198e36d3a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 962661,
"upload_time": "2024-09-17T11:58:25",
"upload_time_iso_8601": "2024-09-17T11:58:25.180555Z",
"url": "https://files.pythonhosted.org/packages/83/26/cf8fd8b98c773e22a835eafa7ba26075911961d31e153b22c7fd810fb554/BTrees-6.1-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6bbe82fd2ae932d19875809a05a9f56f20824429fe384dbf35baea4864fbfa15",
"md5": "71bac67ec086d517fa6861fafce00473",
"sha256": "550d0d1219d55db77f60fe80f6f7700fc39f9df10b537a7660d852f6e52cfbaa"
},
"downloads": -1,
"filename": "BTrees-6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "71bac67ec086d517fa6861fafce00473",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 3843634,
"upload_time": "2024-09-17T12:07:08",
"upload_time_iso_8601": "2024-09-17T12:07:08.277912Z",
"url": "https://files.pythonhosted.org/packages/6b/be/82fd2ae932d19875809a05a9f56f20824429fe384dbf35baea4864fbfa15/BTrees-6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "875bba03c0329cdf597a7c11020be8f39a3d987f7e604918b0227e79be060ad1",
"md5": "016351e1554b616047baa03524a48866",
"sha256": "069148e2e941eca698673083ba0c7defaf691b228b9d4be951d1d13a19d8890a"
},
"downloads": -1,
"filename": "BTrees-6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "016351e1554b616047baa03524a48866",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 3595113,
"upload_time": "2024-09-17T12:07:54",
"upload_time_iso_8601": "2024-09-17T12:07:54.134733Z",
"url": "https://files.pythonhosted.org/packages/87/5b/ba03c0329cdf597a7c11020be8f39a3d987f7e604918b0227e79be060ad1/BTrees-6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e6477e655c43e222bb44d3535367db42e345bb8f2d2d68749bb285f42f0b2ef9",
"md5": "b54824c18ce86a387f11b85b57adbd9c",
"sha256": "0302e1c8f6a2c964ee32f3b80965b071eff2db1debb13860e71008aa00a0321f"
},
"downloads": -1,
"filename": "BTrees-6.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "b54824c18ce86a387f11b85b57adbd9c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1032746,
"upload_time": "2024-09-17T11:58:53",
"upload_time_iso_8601": "2024-09-17T11:58:53.362416Z",
"url": "https://files.pythonhosted.org/packages/e6/47/7e655c43e222bb44d3535367db42e345bb8f2d2d68749bb285f42f0b2ef9/BTrees-6.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "40eee14c946da5ed8eb7c017739de4403a55d45083780bcc18e2576d761e7274",
"md5": "cb37c06fb864683255d0c92e195ba850",
"sha256": "913890a8f5cce402fda7a06d9eaaf4ddda64a042e5c764c38fe5fb2004099072"
},
"downloads": -1,
"filename": "BTrees-6.1-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "cb37c06fb864683255d0c92e195ba850",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 990596,
"upload_time": "2024-09-17T11:58:34",
"upload_time_iso_8601": "2024-09-17T11:58:34.053264Z",
"url": "https://files.pythonhosted.org/packages/40/ee/e14c946da5ed8eb7c017739de4403a55d45083780bcc18e2576d761e7274/BTrees-6.1-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "be880891d74c3167b207aa26d3cb115307c11901549ae820ae2d1494bbccf734",
"md5": "9f0d01d8cca4927dcf41265017c8572b",
"sha256": "407648d72812b19bea2a3f98a2188a17121e9b5add0c12416f8bcecd724cec0b"
},
"downloads": -1,
"filename": "BTrees-6.1-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "9f0d01d8cca4927dcf41265017c8572b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 973285,
"upload_time": "2024-09-17T11:58:35",
"upload_time_iso_8601": "2024-09-17T11:58:35.562051Z",
"url": "https://files.pythonhosted.org/packages/be/88/0891d74c3167b207aa26d3cb115307c11901549ae820ae2d1494bbccf734/BTrees-6.1-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "064dab182d08fec99f11bc3e8488987b7a8b715c73ba8d75e9d2cd466d09a52a",
"md5": "8940c2a17c96159c44cd0aa8b285e4b5",
"sha256": "789a5b858cbee0a4750e7e3b4c13a1e47e6b9c7be50329087e621bff6d81154e"
},
"downloads": -1,
"filename": "BTrees-6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8940c2a17c96159c44cd0aa8b285e4b5",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 4155280,
"upload_time": "2024-09-17T12:07:10",
"upload_time_iso_8601": "2024-09-17T12:07:10.144282Z",
"url": "https://files.pythonhosted.org/packages/06/4d/ab182d08fec99f11bc3e8488987b7a8b715c73ba8d75e9d2cd466d09a52a/BTrees-6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3b56c909afd214bf76cce8e2d81f683872db7ddf180923bd77153e3bad31a783",
"md5": "4d9088fae93099820e571c37443aeb9b",
"sha256": "a76dbeed484720cf7aa231f3552665df91bda0dbb357aab5fefefde133eef89e"
},
"downloads": -1,
"filename": "BTrees-6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "4d9088fae93099820e571c37443aeb9b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 3848016,
"upload_time": "2024-09-17T12:07:55",
"upload_time_iso_8601": "2024-09-17T12:07:55.632217Z",
"url": "https://files.pythonhosted.org/packages/3b/56/c909afd214bf76cce8e2d81f683872db7ddf180923bd77153e3bad31a783/BTrees-6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3cd546f0690def7d134519cbed723e4b5b8e12e7975533238594a75a69ea8cad",
"md5": "deae525bb04be56d379cf65c16d99687",
"sha256": "b4e2a878acdb9e1087c71e8914909a3d582617c496adea8a02bc839285666b0f"
},
"downloads": -1,
"filename": "BTrees-6.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "deae525bb04be56d379cf65c16d99687",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1039797,
"upload_time": "2024-09-17T11:58:32",
"upload_time_iso_8601": "2024-09-17T11:58:32.916614Z",
"url": "https://files.pythonhosted.org/packages/3c/d5/46f0690def7d134519cbed723e4b5b8e12e7975533238594a75a69ea8cad/BTrees-6.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "805019f41c9e1b5022d8ce02fe98be25749b781d005c9562f1b8f9fc14f737b9",
"md5": "b115954ca332ee0febab1010ac909091",
"sha256": "6a7acd17e2934536012445ba33e2805f71e65b9bc9a8683013626fb3fc6824a9"
},
"downloads": -1,
"filename": "BTrees-6.1-cp313-cp313-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "b115954ca332ee0febab1010ac909091",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 990651,
"upload_time": "2024-09-17T11:58:43",
"upload_time_iso_8601": "2024-09-17T11:58:43.499470Z",
"url": "https://files.pythonhosted.org/packages/80/50/19f41c9e1b5022d8ce02fe98be25749b781d005c9562f1b8f9fc14f737b9/BTrees-6.1-cp313-cp313-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "97cf6efb2586732c4026d32fafe5128fc4322c2428979b6521fad59d9e683ecb",
"md5": "568ca3dcc83ee4b5032c06e46ea02b42",
"sha256": "58383635a06532ab6ee66bd1ba20e56af627e7a91665f1d98a8d550890e608d7"
},
"downloads": -1,
"filename": "BTrees-6.1-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "568ca3dcc83ee4b5032c06e46ea02b42",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 973360,
"upload_time": "2024-09-17T11:58:45",
"upload_time_iso_8601": "2024-09-17T11:58:45.481895Z",
"url": "https://files.pythonhosted.org/packages/97/cf/6efb2586732c4026d32fafe5128fc4322c2428979b6521fad59d9e683ecb/BTrees-6.1-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "81c022f15c1cda65a2422e11127a4d9db346bb9f5b456fae78c7504ca38a1159",
"md5": "dbf4e3a9374f75f56c9f415b0846a2b7",
"sha256": "b8f2936e75321e7ce652b0092aaf41f88cc98bf3b70d2dcca2ef8e38bf5b2e44"
},
"downloads": -1,
"filename": "BTrees-6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "dbf4e3a9374f75f56c9f415b0846a2b7",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 4156271,
"upload_time": "2024-09-17T12:07:12",
"upload_time_iso_8601": "2024-09-17T12:07:12.845184Z",
"url": "https://files.pythonhosted.org/packages/81/c0/22f15c1cda65a2422e11127a4d9db346bb9f5b456fae78c7504ca38a1159/BTrees-6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5c28afb6fc23928a0ddfc6388c7d82b3287c3be9eb6b48e519d4bf6453cc8a22",
"md5": "751c25cdde059a39a110ca11b4d84afc",
"sha256": "13ae3f198ad09f62b8fe575d7e63de19c8eabe11568f73f033a48f095debfe6c"
},
"downloads": -1,
"filename": "BTrees-6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "751c25cdde059a39a110ca11b4d84afc",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 3848507,
"upload_time": "2024-09-17T12:07:57",
"upload_time_iso_8601": "2024-09-17T12:07:57.829851Z",
"url": "https://files.pythonhosted.org/packages/5c/28/afb6fc23928a0ddfc6388c7d82b3287c3be9eb6b48e519d4bf6453cc8a22/BTrees-6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "df66a238cc0b3811c28da4cf515f1928de2e51dce178d5260d467f4827b57c49",
"md5": "73b3a9e5f3b7af622cf4a86c72cdcdad",
"sha256": "71448fa70a6e1cdb21a653043fb23df96e8b24c2c1ff93cc1dac818412f1aecc"
},
"downloads": -1,
"filename": "BTrees-6.1-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "73b3a9e5f3b7af622cf4a86c72cdcdad",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 1039990,
"upload_time": "2024-09-17T11:59:56",
"upload_time_iso_8601": "2024-09-17T11:59:56.423207Z",
"url": "https://files.pythonhosted.org/packages/df/66/a238cc0b3811c28da4cf515f1928de2e51dce178d5260d467f4827b57c49/BTrees-6.1-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9f78ced3d2c7eb56452fd6e54c2df62548bb5980ce3c137807e52d87b02d555e",
"md5": "02cad8f51e9fb8ae8edd6bdfb076baf2",
"sha256": "2c3baa188efa475ef02c86ff0f147ec2260e147ff1015ef9750ff8c8dc24c20a"
},
"downloads": -1,
"filename": "BTrees-6.1-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "02cad8f51e9fb8ae8edd6bdfb076baf2",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 975342,
"upload_time": "2024-09-17T11:59:27",
"upload_time_iso_8601": "2024-09-17T11:59:27.020755Z",
"url": "https://files.pythonhosted.org/packages/9f/78/ced3d2c7eb56452fd6e54c2df62548bb5980ce3c137807e52d87b02d555e/BTrees-6.1-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "88a4da5b4f2baf85540e20ce2f75635c83a2917e948937a649e661938306731b",
"md5": "f3054c12a087b11861f8564d8822d7df",
"sha256": "3c8420f894b0611c5a2d9279276d558a5df4c8d153e5c6d418dbd3db505d8713"
},
"downloads": -1,
"filename": "BTrees-6.1-cp38-cp38-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "f3054c12a087b11861f8564d8822d7df",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 963829,
"upload_time": "2024-09-17T11:59:28",
"upload_time_iso_8601": "2024-09-17T11:59:28.531606Z",
"url": "https://files.pythonhosted.org/packages/88/a4/da5b4f2baf85540e20ce2f75635c83a2917e948937a649e661938306731b/BTrees-6.1-cp38-cp38-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0955f8cd5542a8e5f56b86e8875e65770aa8aa7ac0d30c3d6fedcd27f368a7af",
"md5": "9f0e14028ddce9b36090b1a26b363769",
"sha256": "0bc0f9c8117bd790aa53de16049fde637f2864c2d2a38d4359c68e2905bcc2e5"
},
"downloads": -1,
"filename": "BTrees-6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "9f0e14028ddce9b36090b1a26b363769",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 3809491,
"upload_time": "2024-09-17T12:07:15",
"upload_time_iso_8601": "2024-09-17T12:07:15.528045Z",
"url": "https://files.pythonhosted.org/packages/09/55/f8cd5542a8e5f56b86e8875e65770aa8aa7ac0d30c3d6fedcd27f368a7af/BTrees-6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2370cecd30aedbb4af93895d00600eab829e7efddfb6762c64fcb84aaeda1472",
"md5": "d898f5a7622314c10023286827d7c5ca",
"sha256": "a3d54c331927a6966a4cf15e57f824de6750c52905757b36a30475e2733679e4"
},
"downloads": -1,
"filename": "BTrees-6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "d898f5a7622314c10023286827d7c5ca",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 3566026,
"upload_time": "2024-09-17T12:07:59",
"upload_time_iso_8601": "2024-09-17T12:07:59.480525Z",
"url": "https://files.pythonhosted.org/packages/23/70/cecd30aedbb4af93895d00600eab829e7efddfb6762c64fcb84aaeda1472/BTrees-6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "09677722ade4153e2b976551fa60116ccd690573b392ea94350dbe2d8c2d5eab",
"md5": "6dcb161c63fdd429b07063402d2be8af",
"sha256": "3860847354aa901986ddb765c3f8fb492ba226fee5bd28de7c73f3067645bbb1"
},
"downloads": -1,
"filename": "BTrees-6.1-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "6dcb161c63fdd429b07063402d2be8af",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1034793,
"upload_time": "2024-09-17T11:58:50",
"upload_time_iso_8601": "2024-09-17T11:58:50.578266Z",
"url": "https://files.pythonhosted.org/packages/09/67/7722ade4153e2b976551fa60116ccd690573b392ea94350dbe2d8c2d5eab/BTrees-6.1-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "981c03683d4132d47f751af3d07a81cea70f1ed7e1ed41d435764294b6bec8b2",
"md5": "bb4fde4d1ae094e01e1ad88a9293d0b7",
"sha256": "34ca956076216b159f7d3432c2e9eafa67a8379176190550ba8e21d93e2fe3c8"
},
"downloads": -1,
"filename": "BTrees-6.1-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "bb4fde4d1ae094e01e1ad88a9293d0b7",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 973409,
"upload_time": "2024-09-17T11:59:53",
"upload_time_iso_8601": "2024-09-17T11:59:53.189826Z",
"url": "https://files.pythonhosted.org/packages/98/1c/03683d4132d47f751af3d07a81cea70f1ed7e1ed41d435764294b6bec8b2/BTrees-6.1-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f03274ef48b92b66ad8a7c6437725c2fe10044b097e275fbd15437ee4efd9fa9",
"md5": "b8f4c64ff10ea2b25378be8ac8330e11",
"sha256": "45753e3aac923f2356399a8b13302faa2311111de066706376414af80fcaf656"
},
"downloads": -1,
"filename": "BTrees-6.1-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "b8f4c64ff10ea2b25378be8ac8330e11",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 962720,
"upload_time": "2024-09-17T11:59:54",
"upload_time_iso_8601": "2024-09-17T11:59:54.702337Z",
"url": "https://files.pythonhosted.org/packages/f0/32/74ef48b92b66ad8a7c6437725c2fe10044b097e275fbd15437ee4efd9fa9/BTrees-6.1-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8607d86d1bdebf9b1b14a506335b28d585a78ee3e6c436a3e1eb38d44d82e2d0",
"md5": "41dbeabe6e45f3319fc855e7ecee1b6e",
"sha256": "9d5a04064887babe8d63bf407bfb1ede17fe65515c247ae18725a558f2235ada"
},
"downloads": -1,
"filename": "BTrees-6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "41dbeabe6e45f3319fc855e7ecee1b6e",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 3727313,
"upload_time": "2024-09-17T12:07:17",
"upload_time_iso_8601": "2024-09-17T12:07:17.378225Z",
"url": "https://files.pythonhosted.org/packages/86/07/d86d1bdebf9b1b14a506335b28d585a78ee3e6c436a3e1eb38d44d82e2d0/BTrees-6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "abaae48080f8d09d3cb6854c414716967fda9a8c2ba19ff090ecac0d35fe5762",
"md5": "6ea86f3c24c5205ad6d62dff8d51af66",
"sha256": "a05a4bd399dc300dfcb5ae00d15e7fe2ef15b042f704a0ac33161d93635d6bc6"
},
"downloads": -1,
"filename": "BTrees-6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "6ea86f3c24c5205ad6d62dff8d51af66",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 3490269,
"upload_time": "2024-09-17T12:08:01",
"upload_time_iso_8601": "2024-09-17T12:08:01.707718Z",
"url": "https://files.pythonhosted.org/packages/ab/aa/e48080f8d09d3cb6854c414716967fda9a8c2ba19ff090ecac0d35fe5762/BTrees-6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "436134d0860a64659d1a0c263640154f7e8d052d57c1a64ad5725dc314616cc3",
"md5": "43b88dfa2205b531ec94b5b6a1020ec4",
"sha256": "30dbb2c346fe1f077c6300b26049ad275e4134424bd431d386cec0d7e6cc5048"
},
"downloads": -1,
"filename": "BTrees-6.1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "43b88dfa2205b531ec94b5b6a1020ec4",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1034293,
"upload_time": "2024-09-17T11:58:27",
"upload_time_iso_8601": "2024-09-17T11:58:27.907936Z",
"url": "https://files.pythonhosted.org/packages/43/61/34d0860a64659d1a0c263640154f7e8d052d57c1a64ad5725dc314616cc3/BTrees-6.1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4bbd5dd0c5bd5ac2d518c18bc3f4746028f931d77b4d4b83cbcb8c4271ab465b",
"md5": "ab57ba07f73fc5b977421719218649f6",
"sha256": "e18746f8641869a20f45328c9b5f97dc6c71a1195960356aef63b75f5c8d445f"
},
"downloads": -1,
"filename": "btrees-6.1.tar.gz",
"has_sig": false,
"md5_digest": "ab57ba07f73fc5b977421719218649f6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 244735,
"upload_time": "2024-09-17T11:57:24",
"upload_time_iso_8601": "2024-09-17T11:57:24.688607Z",
"url": "https://files.pythonhosted.org/packages/4b/bd/5dd0c5bd5ac2d518c18bc3f4746028f931d77b4d4b83cbcb8c4271ab465b/btrees-6.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-17 11:57:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "zopefoundation",
"github_project": "BTrees",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "btrees"
}