Skip to main content

An Ordered Set implementation in Cython.

Project description

https://badge.fury.io/py/orderedset.png https://travis-ci.org/simonpercivall/orderedset.png?branch=master https://pypip.in/d/orderedset/badge.png

An Ordered Set implementation in Cython. Based on Raymond Hettinger’s OrderedSet recipe.

Example:

>>> from orderedset import OrderedSet
>>> oset = OrderedSet([1, 2, 3])
>>> oset
OrderedSet([1, 2, 3])
>>> oset | [5, 4, 3, 2, 1]
OrderedSet([1, 2, 3, 5, 4])

Features

  • Works like a regular set, but remembers insertion order;
  • Is approximately 5 times faster than the pure Python implementation overall (and 5 times slower than set);
  • Compatible with Python 2.7 through 3.8;
  • Supports the full set interface;
  • Supports some list methods, like index and __getitem__.
  • Supports set methods against iterables.

Changelog

2.0.3 - 2020-02-26

  • bugfix: Generate new C file to fix compile issues

2.0.2 - 2020-02-25

  • bugfix: Fix deprecation warning for collections.abc in Python 3.8+

2.0.1 - 2018-03-20

  • bugfix: Fix isdisjoint to return True when the sets are disjoint
  • build: Include 3.6 when testing
  • dist: Include test files in sdist
  • docs: Make the Readme a bit prettier

2.0 - 2016-02-02

  • breaking change: All comparisons, other than eq, against other ordered sets are now performed unordered; i.e., they are treated as regular sets.
  • isorderedsubset and isorderedsuperset have been added to perform ordered comparisons against other sequences. Using these methods with unordered collections wield yield arbitrary (and depending on Python implementation, unstable) results.

1.2 - 2015-09-29

  • bugfix: Set operations only worked with iterables if the OrderedSet was on the left-hand side. They now work both ways.
  • bugfix: The order of an intersection was the right-hand side’s order. It is now fixed to be the left-hand side’s order.

1.1.2 - 2014-10-02

  • Make comparisons work with sets and lists, and not crash when compared with None.

1.1.1 - 2014-08-24

  • Add pickle/copy support to OrderedSet

1.1 - 2014-06-04

  • Make OrderedSets handle slicing in __getitem__().

1.0.2 - 2014-05-14

  • Add proper attribution and licenses.

1.0.1 - 2014-05-13

  • Don’t require Cython to build an sdist.

1.0 - 2014-05-11

  • First implementation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for orderedset, version 2.0.3
Filename, size File type Python version Upload date Hashes
Filename, size orderedset-2.0.3.tar.gz (101.4 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page