{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "[![Travis](https://img.shields.io/travis/LuminosoInsight/ordered-set/master.svg?label=Travis%20CI)](https://travis-ci.org/LuminosoInsight/ordered-set)\n[![Codecov](https://codecov.io/github/LuminosoInsight/ordered-set/badge.svg?branch=master&service=github)](https://codecov.io/github/LuminosoInsight/ordered-set?branch=master)\n[![Pypi](https://img.shields.io/pypi/v/ordered-set.svg)](https://pypi.python.org/pypi/ordered-set)\n\nAn OrderedSet is a mutable data structure that is a hybrid of a list and a set.\nIt remembers the order of its entries, and every entry has an index number that\ncan be looked up.\n\n\n## Usage examples\n\nAn OrderedSet is created and used like a set:\n\n >>> from ordered_set import OrderedSet\n\n >>> letters = OrderedSet('abracadabra')\n\n >>> letters\n OrderedSet(['a', 'b', 'r', 'c', 'd'])\n\n >>> 'r' in letters\n True\n\nIt is efficient to find the index of an entry in an OrderedSet, or find an\nentry by its index. To help with this use case, the `.add()` method returns\nthe index of the added item, whether it was already in the set or not.\n\n >>> letters.index('r')\n 2\n\n >>> letters[2]\n 'r'\n\n >>> letters.add('r')\n 2\n\n >>> letters.add('x')\n 5\n\nOrderedSets implement the union (`|`), intersection (`&`), and difference (`-`)\noperators like sets do.\n\n >>> letters |= OrderedSet('shazam')\n\n >>> letters\n OrderedSet(['a', 'b', 'r', 'c', 'd', 'x', 's', 'h', 'z', 'm'])\n\n >>> letters & set('aeiou')\n OrderedSet(['a'])\n\n >>> letters -= 'abcd'\n\n >>> letters\n OrderedSet(['r', 'x', 's', 'h', 'z', 'm'])\n\nThe `__getitem__()` and `index()` methods have been extended to accept any\niterable except a string, returning a list, to perform NumPy-like \"fancy\nindexing\".\n\n >>> letters = OrderedSet('abracadabra')\n\n >>> letters[[0, 2, 3]]\n ['a', 'r', 'c']\n\n >>> letters.index(['a', 'r', 'c'])\n [0, 2, 3]\n\nOrderedSet implements `__getstate__` and `__setstate__` so it can be pickled,\nand implements the abstract base classes `collections.MutableSet` and\n`collections.Sequence`.\n\n\n## Interoperability with NumPy and Pandas\n\nAn OrderedSet can be used as a bi-directional mapping between a sparse\nvocabulary and dense index numbers. As of version 3.1, it accepts NumPy arrays\nof index numbers as well as lists.\n\nThis combination of features makes OrderedSet a simple implementation of many\nof the things that `pandas.Index` is used for, and many of its operations are\nfaster than the equivalent pandas operations.\n\nFor further compatibility with pandas.Index, `get_loc` (the pandas method for\nlooking up a single index) and `get_indexer` (the pandas method for fancy\nindexing in reverse) are both aliases for `index` (which handles both cases\nin OrderedSet).\n\n\n## Type hinting\nTo use type hinting features install `ordered-set-stubs` package from\n[PyPI](https://pypi.org/project/ordered-set-stubs/):\n\n $ pip install ordered-set-stubs\n\n\n## Authors\n\nOrderedSet was implemented by Robyn Speer. Jon Crall contributed changes and\ntests to make it fit the Python set API.\n\n\n## Comparisons\n\nThe original implementation of OrderedSet was a [recipe posted to ActiveState\nRecipes][recipe] by Raymond Hettiger, released under the MIT license.\n\n[recipe]: https://code.activestate.com/recipes/576694-orderedset/\n\nHettiger's implementation kept its content in a doubly-linked list referenced by a\ndict. As a result, looking up an item by its index was an O(N) operation, while\ndeletion was O(1).\n\nThis version makes different trade-offs for the sake of efficient lookups. Its\ncontent is a standard Python list instead of a doubly-linked list. This\nprovides O(1) lookups by index at the expense of O(N) deletion, as well as\nslightly faster iteration.\n\nIn Python 3.6 and later, the built-in `dict` type is inherently ordered. If you\nignore the dictionary values, that also gives you a simple ordered set, with\nfast O(1) insertion, deletion, iteration and membership testing. However, `dict`\ndoes not provide the list-like random access features of OrderedSet. You\nwould have to convert it to a list in O(N) to look up the index of an entry or\nlook up an entry by its index.\n\n\n## Compatibility\n\nOrderedSet is automatically tested on Python 2.7, 3.4, 3.5, 3.6, and 3.7.\nWe've checked more informally that it works on PyPy and PyPy3.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/LuminosoInsight/ordered-set", "keywords": "", "license": "MIT-LICENSE", "maintainer": "Robyn Speer", "maintainer_email": "rspeer@luminoso.com", "name": "ordered-set", "package_url": "https://pypi.org/project/ordered-set/", "platform": "any", "project_url": "https://pypi.org/project/ordered-set/", "project_urls": { "Homepage": "https://github.com/LuminosoInsight/ordered-set" }, "release_url": "https://pypi.org/project/ordered-set/3.1.1/", "requires_dist": null, "requires_python": ">=2.7", "summary": "A MutableSet that remembers its order, so that every entry has an index.", "version": "3.1.1" }, "last_serial": 5189421, "releases": { "1.0": [], "1.0.1": [ { "comment_text": "", "digests": { "md5": "478d253ed92ab13de7bcbdc1b05a09b9", "sha256": "e946bbb5a689eb5e6f5f1515964e19e5376fde57747767204eb695d9a38ac3c6" }, "downloads": -1, "filename": "ordered-set-1.0.1.tar.gz", "has_sig": false, "md5_digest": "478d253ed92ab13de7bcbdc1b05a09b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2102, "upload_time": "2013-08-06T17:56:20", "url": "https://files.pythonhosted.org/packages/84/05/6b87786d97a542d8029a1e1ef47ba9eee97de5b42c41f601b25fecb24648/ordered-set-1.0.1.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "1f8d76c4d281a552b79c84be953ffefa", "sha256": "ab2afd02ea537f88a9d86a02d95ee3f53de5520880f4039ece7fcef121ad9fe9" }, "downloads": -1, "filename": "ordered-set-1.1.tar.gz", "has_sig": false, "md5_digest": "1f8d76c4d281a552b79c84be953ffefa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2207, "upload_time": "2013-08-06T19:17:11", "url": "https://files.pythonhosted.org/packages/b7/e3/c25675757f47b3e7ace3b88f14685f978356203fe237a3f21649a4a41fa6/ordered-set-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "97316ebb173d84e27da11d2404ae8a67", "sha256": "6abbd4b5180cdb0251321e600bd7f37ed289e2bcea817e0205df0477ee98193c" }, "downloads": -1, "filename": "ordered-set-1.2.tar.gz", "has_sig": false, "md5_digest": "97316ebb173d84e27da11d2404ae8a67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2443, "upload_time": "2014-05-23T18:13:10", "url": "https://files.pythonhosted.org/packages/1b/cf/44f194a4b743552aaebb250cfcb8823693f7870303a4177f7eaa4c28e19f/ordered-set-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "b8b8690edc1c04275aa6c2202ea41702", "sha256": "57bd11395ed81127a5065c8ea5355389a42f1b2f3a99827b14336e395f3f5524" }, "downloads": -1, "filename": "ordered-set-1.3.tar.gz", "has_sig": false, "md5_digest": "b8b8690edc1c04275aa6c2202ea41702", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2639, "upload_time": "2014-07-21T18:57:35", "url": "https://files.pythonhosted.org/packages/3b/07/7df4e081379d79497dcd48e48e56431e8eb129507c822530e4d5d97ed3b4/ordered-set-1.3.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "6b00a116f22bd83cb8b9962434139427", "sha256": "bf3ae1ebf12e6fec255cf8bf7e40e3c78bc0fc3d87dcb5a1d71765d504f7918b" }, "downloads": -1, "filename": "ordered-set-1.3.1.tar.gz", "has_sig": false, "md5_digest": "6b00a116f22bd83cb8b9962434139427", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2906, "upload_time": "2015-04-21T19:20:02", "url": "https://files.pythonhosted.org/packages/fd/a0/22aafdc1c89a23a42c2144158b8ad92cee553770808fae72e0618936a6b7/ordered-set-1.3.1.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "f213135f03017f04900b36acb2787b9d", "sha256": "66ebf3b1b634e562958835688ffda86db6d36a2cb3f8e00a26b53f9fa20029d1" }, "downloads": -1, "filename": "ordered-set-1.4.0.tar.gz", "has_sig": false, "md5_digest": "f213135f03017f04900b36acb2787b9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3111, "upload_time": "2015-09-28T18:07:25", "url": "https://files.pythonhosted.org/packages/55/16/878fa644974e657d53cf85405892788754d87ebe259ddb0e559b86c8657f/ordered-set-1.4.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "aac6e248096099aaef134d1daaa76fce", "sha256": "5625139acd8890ffd28570c8ad1401fca9b0b6a5769e275d96aca0b194b9ae5c" }, "downloads": -1, "filename": "ordered-set-2.0.0.tar.gz", "has_sig": false, "md5_digest": "aac6e248096099aaef134d1daaa76fce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3423, "upload_time": "2016-01-12T20:38:44", "url": "https://files.pythonhosted.org/packages/ca/78/44eaacdc2d42c7416f6f66cdb004e374242830658f98ab0271fe1cc6221b/ordered-set-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "3111c0dd1417b6421eb982e4cd4d0d68", "sha256": "55567f094481ba204ffede0117ab563e19af050c7cbf33a9a23292b8cb2b0a0e" }, "downloads": -1, "filename": "ordered-set-2.0.1.tar.gz", "has_sig": false, "md5_digest": "3111c0dd1417b6421eb982e4cd4d0d68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3407, "upload_time": "2016-03-29T18:01:03", "url": "https://files.pythonhosted.org/packages/80/8c/7405f2f1a5b4a95fbc87b1e43df9a630aa30d93c0cfb06a9ea64fd436399/ordered-set-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "7b8d73dc64fd3c783ecb48e050bfcc0d", "sha256": "942cad5d7d5b0760d5cbe93dfb385ac2ed402ca1d48c9f4e102d7d5cce3a90eb" }, "downloads": -1, "filename": "ordered-set-2.0.2.tar.gz", "has_sig": false, "md5_digest": "7b8d73dc64fd3c783ecb48e050bfcc0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4881, "upload_time": "2017-04-19T18:21:54", "url": "https://files.pythonhosted.org/packages/c3/1c/4ddba479a75369b31655e295463bc37e5f84acb4fa7f34548946ff0160e3/ordered-set-2.0.2.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "c8f5b99b717618803b914dd9cfe5ef43", "sha256": "a34399fe6aa78358aaa00129d67c65b4aa099adfc023731b1d756c85776a89bb" }, "downloads": -1, "filename": "ordered-set-3.0.0.tar.gz", "has_sig": false, "md5_digest": "c8f5b99b717618803b914dd9cfe5ef43", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7237, "upload_time": "2018-06-16T21:03:35", "url": "https://files.pythonhosted.org/packages/df/77/db7c91893e3c17587ea15f64e63f660fd27e0abd7811ae809ff2a8e0591a/ordered-set-3.0.0.tar.gz" } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "a8059c7b99cde0f8dda01ddee6b43c2c", "sha256": "3d6fd7bffbb15f613a9e8a6281bf97c2d67f7bb8677deca8249df2fbdd9cce7b" }, "downloads": -1, "filename": "ordered-set-3.0.1.tar.gz", "has_sig": false, "md5_digest": "a8059c7b99cde0f8dda01ddee6b43c2c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 9129, "upload_time": "2018-07-10T21:03:59", "url": "https://files.pythonhosted.org/packages/15/67/8a98b27f5a8f11273d74201ca3e0e7003a6482423cddfcb6774e5de9050d/ordered-set-3.0.1.tar.gz" } ], "3.0.2": [ { "comment_text": "", "digests": { "md5": "b0315b42710a57312d4b875370db2121", "sha256": "7d292b866fa44f339ac6e624e3d338accfb415ce0a8431595d51990fbdf61d3b" }, "downloads": -1, "filename": "ordered-set-3.0.2.tar.gz", "has_sig": false, "md5_digest": "b0315b42710a57312d4b875370db2121", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 9147, "upload_time": "2018-09-14T21:13:14", "url": "https://files.pythonhosted.org/packages/c3/dd/abe09fe9b0022ce5a37489c5c237cf7d50ae2e8807691b03321e7062f816/ordered-set-3.0.2.tar.gz" } ], "3.1": [ { "comment_text": "", "digests": { "md5": "5192f5e3771dd290f6d627751ca1c8cb", "sha256": "41c7ba85e7619cd4c71e38d4cd434f84de8473b826919eb79274b3a11b940b4d" }, "downloads": -1, "filename": "ordered_set-3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5192f5e3771dd290f6d627751ca1c8cb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 7795, "upload_time": "2018-11-30T21:58:26", "url": "https://files.pythonhosted.org/packages/79/16/1f9daee477b04a95146fd0933e3c8af1d47804ae901234ea0228db49fa88/ordered_set-3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "acb6be05a5a7c87ab1a16e5320119de7", "sha256": "f9b703ea9aa9c1db44412c5ba1c16cf8b7ad7ef37a685e4da2fd3754b40f8f6a" }, "downloads": -1, "filename": "ordered-set-3.1.tar.gz", "has_sig": false, "md5_digest": "acb6be05a5a7c87ab1a16e5320119de7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 10498, "upload_time": "2018-11-30T21:58:27", "url": "https://files.pythonhosted.org/packages/74/3c/43038ee35e968c57eb72e88278bb930db84cc75850992bfac3f89ec105bd/ordered-set-3.1.tar.gz" } ], "3.1.1": [ { "comment_text": "", "digests": { "md5": "6e12312c8dc4c90fe840e86e8a352644", "sha256": "a7bfa858748c73b096e43db14eb23e2bc714a503f990c89fac8fab9b0ee79724" }, "downloads": -1, "filename": "ordered-set-3.1.1.tar.gz", "has_sig": false, "md5_digest": "6e12312c8dc4c90fe840e86e8a352644", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 10520, "upload_time": "2019-04-25T19:08:00", "url": "https://files.pythonhosted.org/packages/a3/b7/d4d69641cbe707a45c23b190f2d717466ba5accc4c70b5f7a8a450387895/ordered-set-3.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6e12312c8dc4c90fe840e86e8a352644", "sha256": "a7bfa858748c73b096e43db14eb23e2bc714a503f990c89fac8fab9b0ee79724" }, "downloads": -1, "filename": "ordered-set-3.1.1.tar.gz", "has_sig": false, "md5_digest": "6e12312c8dc4c90fe840e86e8a352644", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 10520, "upload_time": "2019-04-25T19:08:00", "url": "https://files.pythonhosted.org/packages/a3/b7/d4d69641cbe707a45c23b190f2d717466ba5accc4c70b5f7a8a450387895/ordered-set-3.1.1.tar.gz" } ] }