{ "info": { "author": "ibu radempa", "author_email": "ibu@radempa.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "multirange\r\n==========\r\nConvenience functions for multiple range-like objects\r\n\r\nAn elementary package for Python >= 3.3\r\n\r\nhttps://pypi.python.org/pypi/multirange/\r\n\r\nStatus\r\n------\r\nThe code works, but it is not stable: functionality might be added\r\nor reorganized as long as the major version equals 0\r\n(cf. http://semver.org/spec/v2.0.0.html, item #4).\r\nHint: Stability grows quicker when you provide feedback.\r\n\r\nmultirange is not yet feature complete; most operations involving\r\nmultiranges are missing.\r\n\r\nIntroduction\r\n------------\r\n\r\nThis library for Python >= 3.3 provides convenience functions for multiple\r\nrange-like objects (corresponding to finite sets of consecutive integers).\r\n\r\nIt has 3 types of operations:\r\n\r\n * operations involving few range objects\r\n * operations involving an iterable of range objects (*range iterable*)\r\n * operations involving so-called multiranges; we define a *multirange*\r\n as an iterable of ranges, which have no mutual overlap, which are not\r\n adjacent, and which are ordered increasingly\r\n\r\nExamples\r\n--------\r\n\r\n >>> import multirange as mr\r\n >>> mr.normalize(range(5, 0))\r\n >>> mr.overlap(range(0, 10), range(5, 15))\r\n range(5, 10)\r\n >>> mr.is_disjunct([range(8, 10), range(0, 2), range(2, 4)])\r\n True\r\n >>> mr.covering_all([range(8, 10), range(0, 2), range(2, 4)])\r\n range(0, 10)\r\n >>> mr.contains(range(0, 10), range(0, 5))\r\n True\r\n >>> mr.is_covered_by([range(8, 10), range(0, 2)], range(0, 20))\r\n True\r\n >>> mr.intermediate(range(10, 15), range(0, 5))\r\n range(5, 10)\r\n >>> list(mr.gaps([range(4, 6), range(6, 7), range(8, 10), range(0, 3)]))\r\n [range(3, 4), range(7, 8)]\r\n >>> mr.difference(range(1, 9), range(2, 3))\r\n (range(1, 2), range(3, 9))\r\n >>> list(mr.normalize_multi([None, range(0, 5), range(5, 7), range(8, 20)]))\r\n [range(0, 7), range(8, 20)]\r\n >>> list(mr.difference_one_multi(range(0, 10), [range(-2, 2), range(4, 5)]))\r\n [range(2, 4), range(5, 10)]\r\n\r\nPlease consult the unit tests for more examples.\r\n\r\nDocumentation\r\n-------------\r\nhttps://multirange.readthedocs.org\r\n\r\nSource\r\n------\r\nhttps://github.com/iburadempa/multirange\r\n\r\nSee also\r\n--------\r\nIf *multirange* is not what you are searching for, you might\r\nbe interested in one of these python modules:\r\n\r\n * rangeset_\r\n * intspan_\r\n * cowboy_\r\n * cs.range_\r\n\r\n.. _rangeset: https://pypi.python.org/pypi/rangeset\r\n.. _intspan: https://pypi.python.org/pypi/intspan\r\n.. _cowboy: https://pypi.python.org/pypi/cowboy\r\n.. _cs.range: https://pypi.python.org/pypi/cs.range", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/iburadempa/multirange", "keywords": "set integer integers range ranges multiple span interval operations", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "multirange", "package_url": "https://pypi.org/project/multirange/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/multirange/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/iburadempa/multirange" }, "release_url": "https://pypi.org/project/multirange/0.3.0/", "requires_dist": null, "requires_python": null, "summary": "Convenience functions for multiple range-like objects", "version": "0.3.0" }, "last_serial": 1541477, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "80cf5bf67251c7e2a771dd6e0b07bdbf", "sha256": "40750c3624bff0506ebc2af4f372b9756bd80da2b3a00af9ff91543f3c842a18" }, "downloads": -1, "filename": "multirange-0.1.0.tar.gz", "has_sig": false, "md5_digest": "80cf5bf67251c7e2a771dd6e0b07bdbf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6718, "upload_time": "2014-07-25T04:00:13", "url": "https://files.pythonhosted.org/packages/c7/ac/4fe09934a87df601f06cb32d9c980fe5b2a49e0682d985a4749eea6daa47/multirange-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d5ee3814d0ba1612d5e2f7a6e9a705fd", "sha256": "f08eebc5d25f77ba95c06666be73f084e0fd4a31c52c98cc00bade229a8c7c08" }, "downloads": -1, "filename": "multirange-0.1.1.tar.gz", "has_sig": false, "md5_digest": "d5ee3814d0ba1612d5e2f7a6e9a705fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8523, "upload_time": "2014-07-25T04:58:42", "url": "https://files.pythonhosted.org/packages/cc/21/527b61150b15856434e06d18c1489a9cc62fa4ac01ccfa99252a03a340a7/multirange-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "b1e27414316eba9ed8f23e3a548c9569", "sha256": "86f40c1026725e7f9af419587a4901dd5f4dc8bb1ecab08a761486f3a30c030e" }, "downloads": -1, "filename": "multirange-0.1.2.tar.gz", "has_sig": false, "md5_digest": "b1e27414316eba9ed8f23e3a548c9569", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8485, "upload_time": "2014-07-25T05:51:42", "url": "https://files.pythonhosted.org/packages/ab/6c/b905ade927c6c7eba8f8fccb5ccbc78ed4ac770e877d21cf11eac90f00df/multirange-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "bcf1a054483f3e2592701367e0751ef1", "sha256": "78a703ee348d7f33ce8ffd6fa237d29ebe553a13eaf3365bff63ce3b772a56ac" }, "downloads": -1, "filename": "multirange-0.1.3.tar.gz", "has_sig": false, "md5_digest": "bcf1a054483f3e2592701367e0751ef1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8566, "upload_time": "2014-11-07T19:27:00", "url": "https://files.pythonhosted.org/packages/aa/b7/45ceea5eeefc1419d836a419e4ff80eb9120f944ff75b8626cc250c8c79f/multirange-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "fec396fe8aa2fd6f6bca5edcb45b7336", "sha256": "7f7ed31fb6a052466f5b14bc9600a4180d5cfade705ea2f02d582044ea7905bd" }, "downloads": -1, "filename": "multirange-0.2.0.tar.gz", "has_sig": false, "md5_digest": "fec396fe8aa2fd6f6bca5edcb45b7336", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11989, "upload_time": "2015-01-18T15:37:05", "url": "https://files.pythonhosted.org/packages/98/fe/70695d642e671e58e5d41da7e7d01787420b0d5e03d646e9738241c1a65d/multirange-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "fe8c776b104b32ce55153c7a70754ac2", "sha256": "4469a8a83e0c5cd03567ce2b5be1536a0165c803e9561a12a8d0ac11466db03b" }, "downloads": -1, "filename": "multirange-0.3.0.tar.gz", "has_sig": false, "md5_digest": "fe8c776b104b32ce55153c7a70754ac2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14020, "upload_time": "2015-05-10T14:53:48", "url": "https://files.pythonhosted.org/packages/60/7e/e1e1810fe71cd5c3eb8c991f849805e11f4c50f9d387c7f77c33a910967d/multirange-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fe8c776b104b32ce55153c7a70754ac2", "sha256": "4469a8a83e0c5cd03567ce2b5be1536a0165c803e9561a12a8d0ac11466db03b" }, "downloads": -1, "filename": "multirange-0.3.0.tar.gz", "has_sig": false, "md5_digest": "fe8c776b104b32ce55153c7a70754ac2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14020, "upload_time": "2015-05-10T14:53:48", "url": "https://files.pythonhosted.org/packages/60/7e/e1e1810fe71cd5c3eb8c991f849805e11f4c50f9d387c7f77c33a910967d/multirange-0.3.0.tar.gz" } ] }