All Versions
36
Latest Version
Avg Release Cycle
63 days
Latest Release
432 days ago

Changelog History
Page 1

  • v2.1.0

    November 21, 2018

    Miscellaneous

    • ⚡️ Small updates to docs and tests for Python 3.7.
  • v2.0.5

    September 03, 2018

    🛠 Bugfixes

    • 🔄 Change imports for Abstract Base Classes to collections.abc to avoid warnings in Python 3.7.
  • v2.0.4

    June 06, 2018

    🛠 Bugfixes

    • SortedDict methods iterkeys, iteritems, itervalues, viewkeys, viewitems, and viewvalues are not implemented for Python 2. Attribute lookup now raises :exc:AttributeError.
  • v2.0.3

    May 31, 2018

    API Changes

    • 🗄 Accessing SortedDict.iloc will emit DeprecationWarning.

    🛠 Bugfixes

    • SortedSet.__rsub__ erroneously reversed its arguments. The method has been removed in favor of the inherited Set.__rsub__ which has a correct implementation.
    • :class:SortedKeysView and :class:SortedValuesView set-operations now return :class:SortedSet objects to better match the semantics of version 1.

    Miscellaneous

    • ✅ The source distribution no longer contains the docs and tests directories. If you need these, then please download an archive from Github. Version control is tagged with the version released to PyPI.
  • v2.0.2

    May 21, 2018

    API Changes

    • ➕ Add SortedDict.iloc for improved backwards compatibility with version 1.
  • v2.0.1

    May 18, 2018

    Miscellaneous

    • 📇 Rename Github repo from grantjenks/sorted_containers to grantjenks/python-sortedcontainers.
    • 🛠 Fix broken links in documentation.

    .. _v2:

  • v2.0.0

    May 18, 2018

    🔖 Version 2 represents a significant update to the source base. The code has been ♻️ refactored and modernized to embrace Python 3 semantics while also using 📚 autodoc in Sphinx for more maintainable documentation. The core design and ✅ algorithms are all the same. Sorted Containers still supports and is tested on Python 2 but primary development is now on Python 3.6.

    🔖 Version 2 is developed on the master branch in the source repository and 🔖 Version 1 of Sorted Containers will be maintained on branch v1.

    🔖 Version 3 of Sorted Containers will be released sometime after January 1, 2020 👍 and will drop support for Python 2.

    At a high-level, changes can be categorized in three ways:

    1. :class:SortedList methods __setitem__, append, extend, and insert all now raise :exc:NotImplementedError. Use add or update instead. Though it's possible to implement these methods, they were confusing, inefficient and wrongly used by some users. Sorted list implementations that need the functionality are encouraged to do so through subclassing. Branch v1 contains a reference implementation.
    2. :class:SortedDict now uses Python 3 semantics for dict views. The iterkeys, iteritems, itervalues, viewkeys, viewitems, and viewvalues methods have all been removed. Use the keys, items, or values methods which now return sorted dict views. :class:SortedKeysView has also replaced SortedDict.iloc as a better interface for indexing.
    3. Method parameter names have changed to be more consistent with Python's built-in data types: val has changed to value, idx has changed to index, and that has changed to other.

    API Changes

    • 🗄 :class:SortedListWithKey is deprecated. Use :class:SortedKeyList instead. The name SortedListWithKey remains as an alias for SortedKeyList. The alias will be removed in Version 3.
    • 🚚 sortedcontainers.sortedlist.LOAD has moved to SortedList.DEFAULT_LOAD_FACTOR so that derived classes can customize the value.
    • SortedList._half and SortedList._dual have been removed. Use SortedList._load instead.
    • :func:SortedList.add parameter val renamed to value.
    • :func:SortedList.__contains__ parameter val renamed to value.
    • :func:SortedList.discard parameter val renamed to value.
    • 🚚 :func:SortedList.remove parameter val renamed to value.
    • :func:SortedList.__delitem__ parameter idx renamed to index.
    • :func:SortedList.__getitem__ parameter idx renamed to index.
    • :func:SortedList.__setitem__ now raises :exc:NotImplementedError. Use :func:SortedList.__delitem__ and :func:SortedList.add instead.
    • :func:SortedList.bisect_left parameter val renamed to value.
    • :func:SortedList.bisect_right parameter val renamed to value.
    • :func:SortedList.bisect parameter val renamed to value.
    • :func:SortedList.count parameter val renamed to value.
    • :func:SortedList.append now raises :exc:NotImplementedError. Use :func:SortedList.add instead.
    • :func:SortedList.extend now raises :exc:NotImplementedError. Use :func:SortedList.update instead.
    • :func:SortedList.insert now raises :exc:NotImplementedError. Use :func:SortedList.add instead.
    • :func:SortedList.pop parameter idx renamed to index.
    • :func:SortedList.index parameter val renamed to value.
    • ➕ :func:SortedList.__add__ parameter that renamed to other.
    • :func:SortedList.__iadd__ parameter that renamed to other.
    • :func:SortedList.__mul__ parameter that renamed to num.
    • :func:SortedList.__imul__ parameter that renamed to num.
    • 👉 SortedList._make_cmp renamed to SortedList.__make_cmp.
    • :func:SortedKeyList.add parameter val renamed to value.
    • :func:SortedKeyList.__contains__ parameter val renamed to value.
    • :func:SortedKeyList.discard parameter val renamed to value.
    • 🚚 :func:SortedKeyList.remove parameter val renamed to value.
    • :func:SortedKeyList.bisect_left parameter val renamed to value.
    • :func:SortedKeyList.bisect_right parameter val renamed to value.
    • :func:SortedKeyList.bisect parameter val renamed to value.
    • :func:SortedKeyList.count parameter val renamed to value.
    • :func:SortedKeyList.append now raises :exc:NotImplementedError. Use :func:SortedKeyList.add instead.
    • :func:SortedKeyList.extend now raises :exc:NotImplementedError. Use :func:SortedKeyList.update instead.
    • :func:SortedKeyList.insert now raises :exc:NotImplementedError. Use :func:SortedKeyList.add instead.
    • :func:SortedKeyList.index parameter val renamed to value.
    • ➕ :func:SortedKeyList.__add__ parameter that renamed to other.
    • :func:SortedKeyList.__radd__ added.
    • :func:SortedKeyList.__iadd__ parameter that renamed to other.
    • :func:SortedKeyList.__mul__ parameter that renamed to num.
    • :func:SortedKeyList.__rmul__ added.
    • :func:SortedKeyList.__imul__ parameter that renamed to num.
    • ✂ Removed SortedDict.iloc. Use :func:SortedDict.keys and :class:SortedKeysView instead.
    • :func:SortedDict.fromkeys parameter seq renamed to iterable.
    • :func:SortedDict.keys now returns :class:SortedKeysView.
    • :func:SortedDict.items now returns :class:SortedItemsView.
    • :func:SortedDict.values now returns :class:SortedValuesView.
    • ✂ Removed SortedDict.viewkeys. Use :func:SortedDict.keys instead.
    • ✂ Removed SortedDict.viewitems. Use :func:SortedDict.items instead.
    • ✂ Removed SortedDict.viewvalues. Use :func:SortedDict.values instead.
    • 🚚 SortedDict.iterkeys removed. Use :func:SortedDict.keys instead.
    • 🚚 SortedDict.iteritems removed. Use :func:SortedDict.items instead.
    • 🚚 SortedDict.itervalues removed. Use :func:SortedDict.values instead.
    • 0️⃣ SortedDict.popitem now accepts an optional index argument. Default -1.
    • sorteddict.KeysView renamed to :class:SortedKeysView.
    • sorteddict.ItemsView renamed to :class:SortedItemsView.
    • sorteddict.ValuesView renamed to :class:SortedValuesView.
    • Sorted dict views rely on collections abstract base classes: dict views and sequence. The :func:SortedKeysView.__getitem__, :func:SortedItemsView.__getitem__, and :func:SortedValuesView.__getitem__ methods are implemented and optimized. All other mixin methods use the default implementation provided by the base class. Prefer :class:SortedDict methods to view methods when possible.
    • 👉 SortedSet._make_cmp renamed to SortedSet.__make_cmp.
    • :func:SortedSet.symmetric_difference parameter that renamed to other.
    • :func:SortedSet.symmetric_difference_update parameter that renamed to other.

    Miscellaneous

    • 📚 Sphinx autodoc now used for API documentation.
    • All benchmarks now run on CPython 3.6 unless otherwise noted.
    • ✅ Testing now uses pytest rather than nose.
    • 👷 AppVeyor CI testing added.
    • ⚡️ Updated versions of alternative implementations.
  • v1.5.10

    April 21, 2018

    Miscellaneous

    • 👌 Improved performance of irange(...) and islice(...) methods.
  • v1.5.9

    December 08, 2017

    Miscellaneous

    • ⬇️ Dropped CPython 2.6 testing.
  • v1.5.8

    December 08, 2017

    🛠 Bugfixes

    • ➕ Added SortedList.reverse to override MutableSequence.reverse and raise NotImplementedError.