File: PKG-INFO

package info (click to toggle)
python-btrees 6.1-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,448 kB
  • sloc: python: 9,200; ansic: 7,020; makefile: 134
file content (622 lines) | stat: -rw-r--r-- 20,947 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
Metadata-Version: 2.1
Name: BTrees
Version: 6.1
Summary: Scalable persistent object containers
Home-page: https://github.com/zopefoundation/BTrees
Author: Zope Foundation
Author-email: zodb-dev@zope.org
License: ZPL 2.1
Project-URL: Documentation, https://btrees.readthedocs.io
Project-URL: Issue Tracker, https://github.com/zopefoundation/BTrees/issues
Project-URL: Sources, https://github.com/zopefoundation/BTrees
Platform: any
Classifier: Development Status :: 6 - Mature
Classifier: License :: OSI Approved :: Zope Public License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Framework :: ZODB
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: Unix
Requires-Python: >=3.8
License-File: LICENSE.txt
Requires-Dist: persistent>=4.1.0
Requires-Dist: zope.interface>=5.0.0
Provides-Extra: test
Requires-Dist: persistent>=4.4.3; extra == "test"
Requires-Dist: transaction; extra == "test"
Requires-Dist: zope.testrunner; extra == "test"
Provides-Extra: zodb
Requires-Dist: ZODB; extra == "zodb"
Provides-Extra: docs
Requires-Dist: Sphinx; extra == "docs"
Requires-Dist: repoze.sphinx.autointerface; extra == "docs"
Requires-Dist: sphinx_rtd_theme; extra == "docs"

=============================================
 ``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``).