{ "info": { "author": "Idin", "author_email": "py@idin.ca", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Abstract\nAbstract is a Python library for creating and drawing graphs \nand taking advantage of graph properties.\n\n## Installation\n\n```bash\npip install abstract\n```\nor\n```bash\npip install git+https://github.com/idin/abstract.git\n```\n\n\n## Graph\n\nIn computer science, a graph is an abstract data type that \nis meant to implement the undirected graph and directed graph \nconcepts from mathematics; specifically, the field of graph theory. \n[[1]](https://en.wikipedia.org/wiki/Graph_(abstract_data_type))\n\nA graph data structure consists of a finite (and possibly mutable) \nset of vertices or nodes or points, together with a set of \nunordered pairs of these vertices for an undirected graph or \na set of ordered pairs for a directed graph. These pairs are known \nas edges, arcs, or lines for an undirected graph and as arrows, \ndirected edges, directed arcs, or directed lines for a directed graph. \nThe vertices may be part of the graph structure, or may be external \nentities represented by integer indices or references. \n[[1]](https://en.wikipedia.org/wiki/Graph_(abstract_data_type))\n\n## Usage\n\nThe *Graph* class allows you to create nodes and edges and \nvisualize the resulting graph. Edges can have direction which\nindicates parent-child relationship.\n\n### *Graph*: Constructing a New Graph\n```python\nfrom abstract import Graph\n\ngraph = Graph()\n```\n\n### *add_node*: Adding a New Node\nThe *add_node* method returns a *GraphNode* object. \n\n```python\nnode_order = [\n 'scissors', 'paper', 'rock', 'lizard', 'Spock', 'scissors',\n 'lizard', 'paper', 'Spock', 'rock', 'scissors'\n]\n\n# add nodes (avoid duplicates)\nfor node in set(node_order):\n node = graph.add_node(name=node)\n```\n\n### *connect*: Adding Edges\nThe *connect* method creates an edge from a *start* node to an *end* node. \n\n```python\nfor index in range(len(node_order)-1):\n edge = graph.connect(start=node_order[index], end=node_order[index+1])\n```\n\n### *get_node*\nTo retrieve a node from the graph you can use the *get_node* method.\n```python\nrock = graph.get_node('rock')\n```\n\n### *draw* (*render*)\nThe *render* method visualizes the graph and if a *path* is provided it saves it\nto an image file that can be a *pdf* or *png*. The file format is infered from \nthe *path* argument. The *draw* method is just an alias for *render*.\n\n```python\n# just visualize the graph\ngraph.draw()\n```\n![image of the graph](https://raw.githubusercontent.com/idin/abstract/master/pictures/rock_paper.png)\n\n\n```python\n# save as a png file and view the file\ngraph.draw(path='my_graph.png', view=True)\n\n```\n\n## Future Features\n\n* Create a graph from:\n * list of dictionaries\n * dataframe\n* Create a new graph by filtering a graph\n\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/idin/abstract", "keywords": "graph", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "abstract", "package_url": "https://pypi.org/project/abstract/", "platform": "", "project_url": "https://pypi.org/project/abstract/", "project_urls": { "Homepage": "https://github.com/idin/abstract" }, "release_url": "https://pypi.org/project/abstract/0.1.5/", "requires_dist": [ "graphviz" ], "requires_python": "~=3.6", "summary": "Python library for creating and drawing graphs and taking advantage of graph properties", "version": "0.1.5" }, "last_serial": 4923550, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "md5": "1537b6da098576b5c3ffa25afd5f26ce", "sha256": "ce9a68b560c15fbb4415ad9bd54f506db3607adfad9318f55ae9359626cd6e71" }, "downloads": -1, "filename": "abstract-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "1537b6da098576b5c3ffa25afd5f26ce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 8743, "upload_time": "2019-03-03T08:36:56", "url": "https://files.pythonhosted.org/packages/5f/52/94ab415a63c69fe5169a3bd76cbcddb7e48a4d576964f9d369feff54c4ae/abstract-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "812e61edfc0bb596e01e8a5ed997a43d", "sha256": "15024cfded0027531ae56c515a631cd0a7e6144f85fe82cc28c5caf276746667" }, "downloads": -1, "filename": "abstract-0.0.3.tar.gz", "has_sig": false, "md5_digest": "812e61edfc0bb596e01e8a5ed997a43d", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 6181, "upload_time": "2019-03-03T08:36:59", "url": "https://files.pythonhosted.org/packages/44/eb/e19da0417e304f3ae880f45742cab9bcf02d48f1c245e781e859727947e7/abstract-0.0.3.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "fbac2f44a893be97b71515a0dd735ae3", "sha256": "01d3d1f3396499364d0f559daddf04563a15bff1b16fa5f60e8f13efb8168767" }, "downloads": -1, "filename": "abstract-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fbac2f44a893be97b71515a0dd735ae3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 9134, "upload_time": "2019-03-03T08:48:46", "url": "https://files.pythonhosted.org/packages/7d/03/d428d2ff87b3a212cad58403bdcb34312a1ee48febb8d5fc81eb7a2e572a/abstract-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7f962b3f7d705acda0b3f875a18ecc44", "sha256": "3fed0ec9a9840733b3935a417537642a38e173e1fe86030b0769b07ff54e600b" }, "downloads": -1, "filename": "abstract-0.1.1.tar.gz", "has_sig": false, "md5_digest": "7f962b3f7d705acda0b3f875a18ecc44", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 6689, "upload_time": "2019-03-03T08:48:47", "url": "https://files.pythonhosted.org/packages/4d/f2/881c2a6506f956f16185fc6dbdec050f0e3b97f876ef5aef3946d3d1089c/abstract-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "42243b8966abb2164b0d57c48ea3c858", "sha256": "9b58b67c8716abad381f11919ac7104ce368d2a3e9beca402dd6417e776d3514" }, "downloads": -1, "filename": "abstract-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "42243b8966abb2164b0d57c48ea3c858", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 9229, "upload_time": "2019-03-03T08:56:25", "url": "https://files.pythonhosted.org/packages/64/30/0164d3c43a6a4401f534c2cfac7b5fa5166407d2fbd5f55025dbcba6e8e0/abstract-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a90a1b873fcd05e3033d0baf1b5e3287", "sha256": "4d1d960c7e8ec7a1c56bf6636ef0bde7344abefc4dc796d78946380b921e1ad0" }, "downloads": -1, "filename": "abstract-0.1.2.tar.gz", "has_sig": false, "md5_digest": "a90a1b873fcd05e3033d0baf1b5e3287", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 6817, "upload_time": "2019-03-03T08:56:26", "url": "https://files.pythonhosted.org/packages/3d/2a/76af46098d69066be86b8df1adbab109bd271564c6fa125554ccd049f8d8/abstract-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "f50a4364bccd8fb96b346b480143cff1", "sha256": "3144a07efc0a546fc1adcb3a5ad4566f94a2bb804fabe197aa1eb44302566896" }, "downloads": -1, "filename": "abstract-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f50a4364bccd8fb96b346b480143cff1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 11644, "upload_time": "2019-03-11T04:34:20", "url": "https://files.pythonhosted.org/packages/67/53/292e8a864e619770ea775b90382df564da63271295c585a5c03704791bf4/abstract-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "06cb97a718b09ef8c87ad9f0607ac110", "sha256": "682be35cca62a83fbd7847405edc9b7c3edfe66d64e3714f84b408e7b449b6de" }, "downloads": -1, "filename": "abstract-0.1.3.tar.gz", "has_sig": false, "md5_digest": "06cb97a718b09ef8c87ad9f0607ac110", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 10013, "upload_time": "2019-03-11T04:34:22", "url": "https://files.pythonhosted.org/packages/af/66/63f80901f30a64c4e7377b716e13d18aed42c7dda48fab6bb4ded5ff0bd0/abstract-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "8748be64f46d704f548b341089959bfd", "sha256": "f85dc8d8b56da3052a960debc52678214b4c32771a3e43f196d1d9d136149164" }, "downloads": -1, "filename": "abstract-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "8748be64f46d704f548b341089959bfd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 11680, "upload_time": "2019-03-11T04:38:20", "url": "https://files.pythonhosted.org/packages/51/5d/e8782961602e028f7dc8515ccd10b36035da6819d345a7828dd1ce1dca33/abstract-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3db3bc87fa8ff470f92ef459a60719b3", "sha256": "b8b60c45076ab6af67ce3536c874a26d50a272c11ae6f45c5247352bd7a27675" }, "downloads": -1, "filename": "abstract-0.1.4.tar.gz", "has_sig": false, "md5_digest": "3db3bc87fa8ff470f92ef459a60719b3", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 10083, "upload_time": "2019-03-11T04:38:21", "url": "https://files.pythonhosted.org/packages/31/44/42e313e5b448016e7c6b8b3554c74dc38df0415e6e6c8378c09ad408b2a3/abstract-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "2fb3a9d48310f2afc7846c71a10a81f7", "sha256": "cd5d107ab827f8b6124d68b1401f50cc4d6f8e74495faadf1f0415c55d4a3b41" }, "downloads": -1, "filename": "abstract-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2fb3a9d48310f2afc7846c71a10a81f7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 11649, "upload_time": "2019-03-11T04:42:03", "url": "https://files.pythonhosted.org/packages/51/d0/c2661b4d834935b8fbad0dfea75be4df69a0fc8eeee9bb3b530b4ea8bb35/abstract-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89fde904c7452f60812c07410e2dc544", "sha256": "5ba09535590df6e1f219339e2cf28bc7156fe8b6d8cfb6aefa78a1cb2503ee28" }, "downloads": -1, "filename": "abstract-0.1.5.tar.gz", "has_sig": false, "md5_digest": "89fde904c7452f60812c07410e2dc544", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 10009, "upload_time": "2019-03-11T04:42:04", "url": "https://files.pythonhosted.org/packages/32/d9/b10a53110cff13168bf44b2d74b591165242f7760e406069c6019d5bbb64/abstract-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2fb3a9d48310f2afc7846c71a10a81f7", "sha256": "cd5d107ab827f8b6124d68b1401f50cc4d6f8e74495faadf1f0415c55d4a3b41" }, "downloads": -1, "filename": "abstract-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2fb3a9d48310f2afc7846c71a10a81f7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 11649, "upload_time": "2019-03-11T04:42:03", "url": "https://files.pythonhosted.org/packages/51/d0/c2661b4d834935b8fbad0dfea75be4df69a0fc8eeee9bb3b530b4ea8bb35/abstract-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89fde904c7452f60812c07410e2dc544", "sha256": "5ba09535590df6e1f219339e2cf28bc7156fe8b6d8cfb6aefa78a1cb2503ee28" }, "downloads": -1, "filename": "abstract-0.1.5.tar.gz", "has_sig": false, "md5_digest": "89fde904c7452f60812c07410e2dc544", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 10009, "upload_time": "2019-03-11T04:42:04", "url": "https://files.pythonhosted.org/packages/32/d9/b10a53110cff13168bf44b2d74b591165242f7760e406069c6019d5bbb64/abstract-0.1.5.tar.gz" } ] }