{ "info": { "author": "Bas Westerbaan", "author_email": "bas@westerbaan.name", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "Python implementation of Tarjan's algorithm\n===========================================\n\nTarjan's algorithm takes as input a directed (possibly cyclic!) graph and\nreturns as output its strongly connected components in a topological order.\n\nExample\n-------\n\n.. image:: https://raw.githubusercontent.com/bwesterb/py-tarjan/master/doc/example.png\n\n.. code::\n\n >>> tarjan({1:[2],2:[1,5],3:[4],4:[3,5],5:[6],6:[7],7:[8],8:[6,9],9:[]})\n [[9], [8, 7, 6], [5], [2, 1], [4, 3]]\n\nUses\n----\n\nCyclic dependencies\n~~~~~~~~~~~~~~~~~~~\n\nIn various cases, dependencies might be cyclic and a group of interdependant\nactions must be executed simultaneously. It is not uncommon that\nthe simulataneous execution is costly. With Tarjan's algorithm, one can\ndetermine an efficient order in which to execute the groups of interdependant\nactions.\n\nTransitive closure\n~~~~~~~~~~~~~~~~~~\n\nUsing Tarjan's algorithm, one can efficiently compute the transitive\nclosure of a graph. (Given a graph *G*, the transitive closure of *G*\nis a graph that contains the same vertices and contains an edge from *v*\nto *w* if and only if there is a path from *v* to *w* in *G*.)\n\nThe transitive closure is implemented in `tarjan.tc`:\n\n.. code::\n\n >>> tc({1:[2],2:[1,5],3:[4],4:[3,5],5:[6],6:[7],7:[8],8:[6,9],9:[]})\n {1: (1, 2, 5, 6, 7, 8, 9),\n 2: (1, 2, 5, 6, 7, 8, 9),\n 3: (3, 4, 5, 6, 7, 8, 9),\n 4: (3, 4, 5, 6, 7, 8, 9),\n 5: (8, 9, 6, 7),\n 6: (8, 9, 6, 7),\n 7: (8, 9, 6, 7),\n 8: (8, 9, 6, 7),\n 9: ()}\n\nExpand group hierarchies\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nGiven a graph of groups, one can use the transitive closure to determine\nall indirect members of a group. (Someone is an indirect member of a group,\nif it is a member of a group that is a member of a group that ... is a member\nof the group.)\n\nInstallation\n------------\nSimply execute\n\n.. code::\n\n easy_install tarjan\n\nor from this source distribution, run\n\n.. code::\n\n python setup.py install\n\n.. image:: https://travis-ci.org/bwesterb/py-tarjan.png\n :target: https://travis-ci.org/bwesterb/py-tarjan\n\nTarjan Changelog\n================\n\n0.2.3.2 (2016-12-28)\n--------------------\n\n- Python 3.6 support\n\n\n0.2.3.1 (2015-11-22)\n--------------------\n\n- Python 3.4 & 3.5 support\n\n\n0.2.3 (2015-02-19)\n------------------\n\n- Fix packaging bug [#6]\n\n\n0.2.2 (2015-02-18)\n------------------\n\n- Removed dynamic version specifier\n- Converted docs to rst for better docs on pypi\n\nThanks-to: Patrick Gerken (github.com/d03cc)", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/bwesterb/py-tarjan/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "tarjan", "package_url": "https://pypi.org/project/tarjan/", "platform": "", "project_url": "https://pypi.org/project/tarjan/", "project_urls": { "Homepage": "http://github.com/bwesterb/py-tarjan/" }, "release_url": "https://pypi.org/project/tarjan/0.2.3.2/", "requires_dist": null, "requires_python": "", "summary": "Implementation of Tarjan's algorithm: resolve cyclic deps", "version": "0.2.3.2" }, "last_serial": 2542294, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "bdf16ee03a4229a3981229300d0893c1", "sha256": "3a5204d215aab7c47e9fef82866a1c6ce907250528cf08d25945103ffd1dbd81" }, "downloads": -1, "filename": "tarjan-0.1.0.tar.gz", "has_sig": false, "md5_digest": "bdf16ee03a4229a3981229300d0893c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3141, "upload_time": "2011-09-05T11:58:54", "url": "https://files.pythonhosted.org/packages/27/ef/74d99c9d83a62a290ca879ceedccb01a4e41d761ac91953f18e6419dc8ab/tarjan-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e601a94e6207ba11af156dc051a7e94a", "sha256": "a0ee38910f8bb1150cc09dc280d22455453de7558fffdd335992f51c4183a4e7" }, "downloads": -1, "filename": "tarjan-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e601a94e6207ba11af156dc051a7e94a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3141, "upload_time": "2011-09-05T12:00:23", "url": "https://files.pythonhosted.org/packages/bd/7b/58b124f3fd2333ec47a1f8b95372ac5b8d93e3759c5af8928927f44e4133/tarjan-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "e5e98db206f660cac83826d2edd5148c", "sha256": "b3cc97a5503d567b7255d881131ecdbbb102fafbf315284c99181c82a3ff68b0" }, "downloads": -1, "filename": "tarjan-0.1.2.tar.gz", "has_sig": false, "md5_digest": "e5e98db206f660cac83826d2edd5148c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3347, "upload_time": "2011-09-08T09:10:02", "url": "https://files.pythonhosted.org/packages/6d/49/194ebf350801fea487eb2ec4094768d6d710c145d74f6eb9ccb75a3dcbee/tarjan-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "fb86c6617c78d031007af4ef06b13f4a", "sha256": "6820381b8bca7b63412df24ec43ace780dceba5d961cf7a04313446d341d66b2" }, "downloads": -1, "filename": "tarjan-0.2.0.tar.gz", "has_sig": false, "md5_digest": "fb86c6617c78d031007af4ef06b13f4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3529, "upload_time": "2014-08-04T13:00:40", "url": "https://files.pythonhosted.org/packages/86/e7/3dbd023985134e4ebb8693cc43edd72de8df11d0ec7b45517f8dfb76eb02/tarjan-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "d7a15bc5e71a3eec73fda3d6e978f886", "sha256": "ef6b09d501a0b17136407b194339f9771cf0c612e332dca458d693bdc4cd01bb" }, "downloads": -1, "filename": "tarjan-0.2.1.tar.gz", "has_sig": false, "md5_digest": "d7a15bc5e71a3eec73fda3d6e978f886", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3968, "upload_time": "2014-08-04T15:35:34", "url": "https://files.pythonhosted.org/packages/a2/13/c1dd916162f0d56ba7fcf5132956ae23efec77e66c2f67efe5a53e670cb0/tarjan-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "341116f4ba4702e277c7a675a73492f5", "sha256": "6e5bd56b042177ddc2f1ead606f624b60d42043bfac79bd7c7350f6125b1bf9e" }, "downloads": -1, "filename": "tarjan-0.2.2.zip", "has_sig": false, "md5_digest": "341116f4ba4702e277c7a675a73492f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8124, "upload_time": "2015-02-18T18:15:19", "url": "https://files.pythonhosted.org/packages/e1/c8/7b2b490e2101140a4e9c907fa4c613aa9a3d02aa1892ae51f4a87973f2cc/tarjan-0.2.2.zip" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "123b21760c459aa8d06f42a24f53992f", "sha256": "266a1ea5bbd1d5c94e6f95e65ee100061fdadb9171b76adc325728def9175920" }, "downloads": -1, "filename": "tarjan-0.2.3.zip", "has_sig": false, "md5_digest": "123b21760c459aa8d06f42a24f53992f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8523, "upload_time": "2015-02-19T08:42:27", "url": "https://files.pythonhosted.org/packages/82/d9/7bedb4378f04818c6d2f3a01d083d288b3cc8e82d890a8bf4572e32089f3/tarjan-0.2.3.zip" } ], "0.2.3.1": [ { "comment_text": "", "digests": { "md5": "6ae6c6dc1e93a98ea8ce37c64c613a99", "sha256": "91f99094246b65e17f316cb2a3f76958eba0ab51f92215e68c304fbfca4acfa0" }, "downloads": -1, "filename": "tarjan-0.2.3.1.tar.gz", "has_sig": false, "md5_digest": "6ae6c6dc1e93a98ea8ce37c64c613a99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4100, "upload_time": "2015-11-22T19:19:35", "url": "https://files.pythonhosted.org/packages/49/ee/bed251094603f361f9476957fece1d9b3c5471c2ad235e4b98280aaef988/tarjan-0.2.3.1.tar.gz" } ], "0.2.3.2": [ { "comment_text": "", "digests": { "md5": "7863806de990c3da225ec4ef299e8012", "sha256": "cffa9147e3bb80d60e72a3c692dd53145e19b14bc68b4452b5a5ee1a4cff9c6d" }, "downloads": -1, "filename": "tarjan-0.2.3.2.tar.gz", "has_sig": false, "md5_digest": "7863806de990c3da225ec4ef299e8012", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4133, "upload_time": "2016-12-28T10:56:32", "url": "https://files.pythonhosted.org/packages/7c/74/a35aabdb826eb6a29a74e792f75e1228d9ce3811fbf52b1931d515274cb2/tarjan-0.2.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7863806de990c3da225ec4ef299e8012", "sha256": "cffa9147e3bb80d60e72a3c692dd53145e19b14bc68b4452b5a5ee1a4cff9c6d" }, "downloads": -1, "filename": "tarjan-0.2.3.2.tar.gz", "has_sig": false, "md5_digest": "7863806de990c3da225ec4ef299e8012", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4133, "upload_time": "2016-12-28T10:56:32", "url": "https://files.pythonhosted.org/packages/7c/74/a35aabdb826eb6a29a74e792f75e1228d9ce3811fbf52b1931d515274cb2/tarjan-0.2.3.2.tar.gz" } ] }