* Fix a regression in 0.23.0 that could defeat type inference
of a bidict's key type and value type when running in Python
3.8 or 3.9. :issue:`310`
* Primarily, this release simplifies bidict by removing minor
features that are no longer necessary or that have little to
no apparent usage, and it also includes some performance
optimizations.
* Specifically, initializing or updating a bidict is now up to
70% faster in microbenchmarks.
* The changes in this release will also make it easier to
maintain and improve bidict in the future, including further
potential performance optimizations.
* It also contains several other improvements.
* Drop support for Python 3.7, which reached end of life on
2023-06-27, and take advantage of features available in
Python 3.8+.
* Drop support for Python 3.7, which reached end of life on
2023-06-27, and take advantage of features available in
Python 3.8+.
* Remove FrozenOrderedBidict now that Python 3.7 is no longer
supported. :class:`~bidict.frozenbidict` now provides
everything that FrozenOrderedBidict provided (including
:class:`reversibility <collections.abc.Reversible>`) on all
supported Python versions, but with less space overhead.
* Remove FrozenOrderedBidict now that Python 3.7 is no longer
supported. :class:`~bidict.frozenbidict` now provides
everything that FrozenOrderedBidict provided (including
:class:`reversibility <collections.abc.Reversible>`) on all
supported Python versions, but with less space overhead.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-bidict?expand=0&rev=33
- Drop support for Python 3.6, which reached end of life on 2021-12-23
and is no longer supported by pip as of pip version 22.
Take advantage of this to reduce bidict's maintenance costs.
- Use mypy-appeasing explicit re-exports in ``__init__.py``
(e.g. ``import x as x``)
so that mypy no longer gives you an implicit re-export error
if you run it with ``--no-implicit-reexport`` (or ``--strict``)
against code that imports from :mod:`bidict`.
- Update the implementations and type annotations of
:meth:`bidict.BidictBase.keys` and
:meth:`bidict.BidictBase.values` to make use of the new
:class:`~bidict.BidictKeysView` type,
which works a bit better with type checkers.
- Inverse bidict instances are now computed lazily the first time
the :attr:`~bidict.BidictBase.inverse` attribute is accessed
rather than being computed eagerly during initialization.
(A bidict's backing, inverse, one-way mapping
is still kept in sync eagerly as any mutations are made,
to preserve key- and value-uniqueness.)
- Optimize initializing a bidict with another bidict.
In a microbenchmark on Python 3.10,
this now performs over **2x faster**.
- Optimize updating an empty bidict with another bidict.
In a microbenchmark on Python 3.10,
this now performs **60-75% faster**.
- Optimize :meth:`~bidict.BidictBase.copy`.
In a microbenchmark on Python 3.10,
this now performs **10-20x faster**.
- Optimize rolling back
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-bidict?expand=0&rev=22
- Update to version 0.21.3
* All bidicts now provide the equals_order_sensitive() method,
not just bidict.OrderedBidicts.
* Since support for Python < 3.6 was dropped in v0.21.0,
non-Ordered bidicts preserve a deterministic ordering on all
supported Python versions, so all bidicts can now provide
equals_order_sensitive().
* Take better advantage of the fact that dicts are reversible
in Python 3.8+. This allows even non-Ordered bidicts to
efficiently provide a __reversed__() implementation, which
they now do. As a result, if you are using Python 3.8+,
frozenbidict now gives you everything that
FrozenOrderedBidict gives you with less space overhead.
* Drop setuptools_scm as a setup_requires dependency.
* Remove the bidict.__version_info__ attribute.
OBS-URL: https://build.opensuse.org/request/show/916936
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-bidict?expand=0&rev=21