{ "info": { "author": "Bruce Fenske", "author_email": "bwfenske@ualberta.ca", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "[![](https://travis-ci.org/viralogic/py-enumerable.svg?branch=master)](https://travis-ci.org/viralogic/py-enumerable)\n[![Coverage Status](https://coveralls.io/repos/github/viralogic/py-enumerable/badge.svg?branch=master)](https://coveralls.io/github/viralogic/py-enumerable?branch=master)\n\n# py-linq #\n\nLINQ (Language Integrated Query) is a popular querying language available in .NET. This library ports the language so\nthat developers can query collections of objects using the same syntax. This library would be useful for Python developers\nwith experience using the expressiveness and power of LINQ.\n\n## Install ##\n\nAvailable as a package from PyPI.\n\n pip install py-linq\n\n## Usage\n\nTo access the LINQ functions an iterable needs to be wrapped by the Enumerable\n\n from py_linq import Enumerable\n my_collection = Enumerable([1,2,3])\n\n## Documentation ##\n\nPlease visit the project [site](https://viralogic.github.io/py-enumerable) for better documentation\n\n## Authors ##\n\n[Bruce Fenske](https://github.com/viralogic)\n\n## Contributors ##\n\n1. [Oleg Shilo](https://github.com/oleg-shilo)\n2. [Sebastien Celles](https://github.com/scls19fr)\n\n## History ##\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
DateVersionDescription
7-Oct-20191.1.0\n
    \n
  • Issue # 23 - Any accepts a None predicate
  • \n
  • Issue #24 - Performance improvement where any returns on first matching element
  • \n
  • Issue #25 - Use of any to check for elements in an Enumerable
  • \n
  • Issue #26 - Performance improvement where element_at only iterates until the n-th element
  • \n
  • Issue #29 - Performance improvement where distinct method is no longer immediately executing.
  • \n
  • Issue #30 - Performance improvement where all function is no longer iterating through collection more than once
  • \n
  • Issue #31 - Performance improvement where reverse function is no longer immediately executing
  • \n
  • Issue #32 - Count function now accepts a lambda predicate to filter collection
  • \n
\n
16-Jul-20191.0.1\n
    \n
  • Issue #21 - Support lambda predicates in first, first_or_default, last, and last_or_default methods
  • \n
\n
07-Mar-20191.0\n
    \n
  • Issue #17 - Added additional LINQ methods to complete the Enumerable API as per MSDN
  • \n
\n
06-Jan-20190.7\n
    \n
  • Issue #19 - Distinct bug fix
  • \n
\n
06-Dec-20180.6\n
    \n
  • Issue #13 - Empty list as default parameter
  • \n
  • Issue #14 - except_ method bug fix
  • \n
\n
19-Jul-20170.5\n
    \n
  • last and last_or_default method bug fixes
  • \n
  • then_by and then_by_descending implementation
  • \n
\n
30-Jan-20170.4\n
    \n
  • Added Python 3 support
  • \n
\n
15-Jan-20150.3\n
    \n
  • Changed README.rst
  • \n
  • Performance improvements
  • \n
\n
12-Jan-20150.2\n
    \n
  • Added documentation
  • \n
\n
07-Jan-20150.1\n
    \n
  • Initial beta release
  • \n
\n
", "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/viralogic/py-enumerable", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "py_linq", "package_url": "https://pypi.org/project/py_linq/", "platform": "", "project_url": "https://pypi.org/project/py_linq/", "project_urls": { "Homepage": "https://github.com/viralogic/py-enumerable" }, "release_url": "https://pypi.org/project/py_linq/1.1.0/", "requires_dist": null, "requires_python": "", "summary": "Linq for Python ", "version": "1.1.0" }, "last_serial": 5942899, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "7f958901df2a4d117fcb6ce352c5e72d", "sha256": "5dd480f571f5b98e400b0ff8e4881e59a601ad3a5ec56b5421bee6e81d7e4165" }, "downloads": -1, "filename": "py-linq-0.1.0.zip", "has_sig": false, "md5_digest": "7f958901df2a4d117fcb6ce352c5e72d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7669, "upload_time": "2015-01-08T18:51:21", "url": "https://files.pythonhosted.org/packages/0e/7a/b106ac5a6af98623c8fc21d6ac2ea309c18b72b6095c44609c285cab1486/py-linq-0.1.0.zip" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "aa7f1a9e6fcc1a4e844a2ec73d3dfaaa", "sha256": "a8040e0b49124591ee81f6b10d294d10df466a23d24f5e0bbe4d1ad10972b218" }, "downloads": -1, "filename": "py-linq-0.2.0.zip", "has_sig": false, "md5_digest": "aa7f1a9e6fcc1a4e844a2ec73d3dfaaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11236, "upload_time": "2015-01-12T19:03:43", "url": "https://files.pythonhosted.org/packages/60/09/4347ba04eedf285b97e93125dcde806e76b2f72605d56f576035db9c97f7/py-linq-0.2.0.zip" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "00b85793c5180ee440cc26e542c56954", "sha256": "a5c5e0a15595e48edcb471b91071db06d5c51313a8580259b7d00ff270eacaa2" }, "downloads": -1, "filename": "py-linq-0.3.0.zip", "has_sig": false, "md5_digest": "00b85793c5180ee440cc26e542c56954", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11161, "upload_time": "2015-01-15T21:53:53", "url": "https://files.pythonhosted.org/packages/ab/00/83fbda50557e41493a0557af21e4044ea052d9957c98a1eb0d4aec7cc8f5/py-linq-0.3.0.zip" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "6555f2b137de6fa9d107ddba73acaf79", "sha256": "cb9e0a180b444f5904af799e33a5deeda284025cec9b7bd9fd48df0d2ebdd29a" }, "downloads": -1, "filename": "py-linq-0.4.0.zip", "has_sig": false, "md5_digest": "6555f2b137de6fa9d107ddba73acaf79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11911, "upload_time": "2017-01-30T22:19:57", "url": "https://files.pythonhosted.org/packages/c8/ac/06865308bd32445db8b0546662620b5cbde3b1abb58467c7f7261a4bd0b7/py-linq-0.4.0.zip" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "338018d85e662889ad9e27d79c82fd43", "sha256": "6d64f4f3cf80ad3a280efed171be29ba2963338e403110ac13768bf2c97e41b7" }, "downloads": -1, "filename": "py-linq-0.5.0.tar.gz", "has_sig": false, "md5_digest": "338018d85e662889ad9e27d79c82fd43", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10172, "upload_time": "2017-07-19T20:39:02", "url": "https://files.pythonhosted.org/packages/75/aa/d23c88fef35ef03e4d51998f0df46eb9288cfcd3c7e01e599247ca8e2951/py-linq-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "3fd2d765b0d45a119ff01706a2502929", "sha256": "72fde09735c8f603ce7cdd5d26a72c95b2c9483bf0fb311c4391b0ee107f0c08" }, "downloads": -1, "filename": "py_linq-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3fd2d765b0d45a119ff01706a2502929", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 47353, "upload_time": "2018-12-07T19:33:34", "url": "https://files.pythonhosted.org/packages/21/4e/da845baba920630876aa93ededdf2d6fe8859dbe73becabc4b118c4f6498/py_linq-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cde10d1a664a47f08385f5efc8d7b2c5", "sha256": "8937c153436fae96306a37a47ae6dec9431e88ddd9d0b769793855bc9513d3d4" }, "downloads": -1, "filename": "py_linq-0.6.0.tar.gz", "has_sig": false, "md5_digest": "cde10d1a664a47f08385f5efc8d7b2c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20533, "upload_time": "2018-12-07T19:34:00", "url": "https://files.pythonhosted.org/packages/6d/96/97e9a98b5cae8132e9d087db205482a417bc424818fa11252a4a0f4cafb0/py_linq-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "fe37106ee6ba015710db753697c80915", "sha256": "2f87252a0bb2ed361eecabf8e02e0204cefbb09f8ef660ea363d72e061a13805" }, "downloads": -1, "filename": "py_linq-0.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fe37106ee6ba015710db753697c80915", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 48257, "upload_time": "2019-01-07T05:23:24", "url": "https://files.pythonhosted.org/packages/39/2e/91ef24c6e7c0c4f2c15b9aa3691367dc32a01e441943d36c524f7e48abe2/py_linq-0.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "25c739d83be6079f94a624bc03c9ad35", "sha256": "78d5683e9846db80b6dc99eded267e3f237fb46a31229fc0b4193597d3e3ca3e" }, "downloads": -1, "filename": "py_linq-0.7.0.tar.gz", "has_sig": false, "md5_digest": "25c739d83be6079f94a624bc03c9ad35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20362, "upload_time": "2019-01-07T05:23:37", "url": "https://files.pythonhosted.org/packages/95/4e/1e7a8576c60f0894e3eaa8ad723e28e66717f5471a86842141b4aeb25240/py_linq-0.7.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "a178d9b2200d34ea6520725da0db731d", "sha256": "92ec12627e26c84b8154a548f4df3ceb4f85a2e3dde2a5b6909c89a8c76acf31" }, "downloads": -1, "filename": "py_linq-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a178d9b2200d34ea6520725da0db731d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 56772, "upload_time": "2019-03-08T05:57:26", "url": "https://files.pythonhosted.org/packages/10/f2/4504dbc83829c3a409639ae64b41bcf78d5d1c0f329d9592d8b7761836ae/py_linq-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1185d3166ad91279940f3926fb298ef5", "sha256": "8f3653cdef3a7ce7ee1f4c1a553fa624a3649d40d7691273973804b79cf21c33" }, "downloads": -1, "filename": "py_linq-1.0.0.tar.gz", "has_sig": false, "md5_digest": "1185d3166ad91279940f3926fb298ef5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23997, "upload_time": "2019-03-08T05:57:38", "url": "https://files.pythonhosted.org/packages/5c/a8/762d517b417acb78bffd8c3a3b9868d1c0476dce403b4829b95e38979e15/py_linq-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "82cd5c26f1a35b22b898aa89ebb037aa", "sha256": "ca0cd7ce87463367c65e7ce9274092ab2f30a68dec353cffaf02b7f2876a2cb7" }, "downloads": -1, "filename": "py_linq-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "82cd5c26f1a35b22b898aa89ebb037aa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 58280, "upload_time": "2019-07-17T05:23:31", "url": "https://files.pythonhosted.org/packages/49/6d/652f0dc5ed4c51f60fa2d81acbdb7b050c094a6a943c61d32c9e23f2d7ab/py_linq-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "47c22663ec1c08f691c8b6ac20e70432", "sha256": "7fc6bde6f1c7462ff0108b0edd7301f61609bb63b6f527d12cfc01eee2dfba5e" }, "downloads": -1, "filename": "py_linq-1.0.1.tar.gz", "has_sig": false, "md5_digest": "47c22663ec1c08f691c8b6ac20e70432", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29202, "upload_time": "2019-07-17T05:23:43", "url": "https://files.pythonhosted.org/packages/94/09/20000c884e5595c5898d213b6bffae1a0d27650ee6744c4630f8f0639b15/py_linq-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "1afa9e777e3f19b1d39c90014f9a4098", "sha256": "45b032ccd11cd2782c92f2c813a05faef6c99b072f07892fb7440adbd471de78" }, "downloads": -1, "filename": "py_linq-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1afa9e777e3f19b1d39c90014f9a4098", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 61674, "upload_time": "2019-10-08T05:14:30", "url": "https://files.pythonhosted.org/packages/e5/7a/69704ce17e8fc478a4716134da580240f932f1fc11a326e6692072704f24/py_linq-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d87fdafe2ac113fc0b1fda9256172582", "sha256": "cab80a6d18889818faa2b925066fcb84bb11c8d1cbabb18e010902ec88a1a267" }, "downloads": -1, "filename": "py_linq-1.1.0.tar.gz", "has_sig": false, "md5_digest": "d87fdafe2ac113fc0b1fda9256172582", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30020, "upload_time": "2019-10-08T05:14:43", "url": "https://files.pythonhosted.org/packages/c6/2c/7fa9a61ab8bec486e0c9e7e3e93812f41bb44455fb383a6290a1bf805eff/py_linq-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1afa9e777e3f19b1d39c90014f9a4098", "sha256": "45b032ccd11cd2782c92f2c813a05faef6c99b072f07892fb7440adbd471de78" }, "downloads": -1, "filename": "py_linq-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1afa9e777e3f19b1d39c90014f9a4098", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 61674, "upload_time": "2019-10-08T05:14:30", "url": "https://files.pythonhosted.org/packages/e5/7a/69704ce17e8fc478a4716134da580240f932f1fc11a326e6692072704f24/py_linq-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d87fdafe2ac113fc0b1fda9256172582", "sha256": "cab80a6d18889818faa2b925066fcb84bb11c8d1cbabb18e010902ec88a1a267" }, "downloads": -1, "filename": "py_linq-1.1.0.tar.gz", "has_sig": false, "md5_digest": "d87fdafe2ac113fc0b1fda9256172582", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30020, "upload_time": "2019-10-08T05:14:43", "url": "https://files.pythonhosted.org/packages/c6/2c/7fa9a61ab8bec486e0c9e7e3e93812f41bb44455fb383a6290a1bf805eff/py_linq-1.1.0.tar.gz" } ] }