{ "info": { "author": "Dmitry Rudanov", "author_email": "rudanov.d@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# lgraph\nPython module for working with L-graphs.\n\n## Installation\n```sh\npip install l-graph\n```\n\n## Creating an L-graph\n```python\nfrom lgraph import LGraph\n\nlg = LGraph(3)\n\nlg.add_edge(lg.initial_main.name, '1')\nlg.add_edge('1', '2', label='b', round_trace=')', square_trace='[')\nlg.add_edge('2', '3', label='c', square_trace=']')\nlg.add_edge('3', lg.final_main.name)\n\nlg.add_edge('1', '1', label='a', round_trace='(')\nlg.add_edge('2', '2', label='b', round_trace=')', square_trace='[')\nlg.add_edge('3', '3', label='c', square_trace=']')\n\n```\n![Graph_example](graph_images/a^n_b^n_c^n.png)\n\n## Saving and loading L-graphs\n```python\nlg.save('graph_examples/a^n_b^n_c^n')\nlg.load('graph_examples/a^n_b^n')\n```\n\n## Cheking if string is in the language of the L-graph\n```python\nlg = LGraph()\nlg.load('graph_examples/a^n_b^n_c^n')\n\n'abc' in lg\n>>> True\n\n'abccc' in lg\n>>> False\n\n# Finding path of the string\npath = lg.find_successful_path('abc')\nLGraph.path_to_string(path)\n>>> initial_main---->1--a-->1--b-->2--c-->3---->final_main\n\n```\n\n## Type definition of the L-graph\nL-graph types defined in LGraph.LGraphType \n```python\nclass LGraphType(Enum):\n RECURSIVELY_ENUMERABLE = 0\n CONTEXT_SENSITIVE = 1\n CONTEXT_FREE = 2\n REGULAR = 3\n```\nTo define type of the L-graph use:\n```python\nlg.type\n```\nTo check properties of L-graph use:\n```python\nlg.is_regular()\nlg.is_context_free()\nlg.is_context_sensitive()\n```\n\n## Opeartions\nLeft:\n![Graph_example](graph_images/left.png)\n\nRight:\n![Graph_example](graph_images/right.png)\n\n```python\nlg_left, lg_right = LGraph(), LGraph()\n\nlg_left.load('graph_examples/left')\nlg_right.load('graph_examples/right')\n```\n\n### Concatenation\n```\nlg = lg_left * lg_right\nlg.save('graph_examples/concatenate_result')\n```\n![Graph_example](graph_images/concat.png)\n\n### Union\n```python\nlg = lg_left + lg_right\nlg.save('graph_examples/union_result')\n```\n![Graph_example](graph_images/union.png)\n\nShorter version is also available:\n```python\nlg_left *= lg_right\nlg_left += lg_right\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/rudanov/lgraph", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "l-graph", "package_url": "https://pypi.org/project/l-graph/", "platform": "", "project_url": "https://pypi.org/project/l-graph/", "project_urls": { "Homepage": "https://github.com/rudanov/lgraph" }, "release_url": "https://pypi.org/project/l-graph/0.2.2/", "requires_dist": null, "requires_python": "", "summary": "Python module for working with L-graphs", "version": "0.2.2" }, "last_serial": 5262322, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "7f71f8ecca37a9f354962716b7da8881", "sha256": "a1ad465d4fd3434900c2a55900fbc682d67a3e9b6289a41bbdfca94af4afbc4c" }, "downloads": -1, "filename": "l_graph-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7f71f8ecca37a9f354962716b7da8881", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6659, "upload_time": "2019-05-13T09:50:57", "url": "https://files.pythonhosted.org/packages/49/e8/073453f75147c3b9651e12fefa12ecf56e1bae4cf8854b8b489d4d025a34/l_graph-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5f0f16b2ff55985e5468b3f75c28e912", "sha256": "a7f8480693cfd1b944b0f2ed0980ebba24c5ebec835bdae1cf86d5d7e6c6869c" }, "downloads": -1, "filename": "l-graph-0.1.tar.gz", "has_sig": false, "md5_digest": "5f0f16b2ff55985e5468b3f75c28e912", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4881, "upload_time": "2019-05-13T09:50:59", "url": "https://files.pythonhosted.org/packages/c9/ca/12a3ee95c7726b65b05b65336fe4bc49525120929dfead543505483ed68c/l-graph-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "aa406bf787cb71da4d23a382d5854fe4", "sha256": "402f2d8a9f1e9bf4c6e5a01c89ed9f80c8305167d46e62463636f12e1a8fb278" }, "downloads": -1, "filename": "l_graph-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "aa406bf787cb71da4d23a382d5854fe4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6651, "upload_time": "2019-05-13T10:00:26", "url": "https://files.pythonhosted.org/packages/0f/1c/7922bb14ba01c79d5efb208730bcce502a8684e77b61d0c79dad98c86272/l_graph-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d9026570a18f3d8137d1d3191e7a7005", "sha256": "3425652a097326e551b8790c2a0cd39ab60b3d4a4160c5c9c09ee6ee9db394ab" }, "downloads": -1, "filename": "l-graph-0.2.tar.gz", "has_sig": false, "md5_digest": "d9026570a18f3d8137d1d3191e7a7005", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4893, "upload_time": "2019-05-13T10:00:27", "url": "https://files.pythonhosted.org/packages/9b/da/5b3a4cddcc0881c00af9df413d6ebd6bc8d7ea2bf934bfdf97c88ada721d/l-graph-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "e203f252cb830289dbd1e3590f93489c", "sha256": "e4f8580f53767c332df402932be201dc2da3471fb5cccdaf0ac9a73d06d7f188" }, "downloads": -1, "filename": "l_graph-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e203f252cb830289dbd1e3590f93489c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6672, "upload_time": "2019-05-13T13:10:10", "url": "https://files.pythonhosted.org/packages/0f/10/7f17ecd29386b18ac5cc3050bc08fedb332ee56e2de8972235412109adb1/l_graph-0.2.1-py3-none-any.whl" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "ab26b2bff09b86c0cd9ba136c201e5e2", "sha256": "3a71b710b1b1a46d897700f6822dc16bc6be0c8c44faf85753113d5b73419d44" }, "downloads": -1, "filename": "l_graph-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ab26b2bff09b86c0cd9ba136c201e5e2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7160, "upload_time": "2019-05-13T13:33:27", "url": "https://files.pythonhosted.org/packages/c9/c4/b18f00bcd00c50ee0a8844e9701609f4c575ba2718b5ce257697f46416d6/l_graph-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a864dbb7543007e80037391e41d4a5e", "sha256": "ede1ba6d0a602e7f933dbb753a508eb900db6feea3a9d21adf2c471bc4d1082f" }, "downloads": -1, "filename": "l-graph-0.2.2.tar.gz", "has_sig": false, "md5_digest": "7a864dbb7543007e80037391e41d4a5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5448, "upload_time": "2019-05-13T13:33:29", "url": "https://files.pythonhosted.org/packages/18/83/fd7938e19d971a00fb1ec0420b52ee29fb207631eb600043a38778d24094/l-graph-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ab26b2bff09b86c0cd9ba136c201e5e2", "sha256": "3a71b710b1b1a46d897700f6822dc16bc6be0c8c44faf85753113d5b73419d44" }, "downloads": -1, "filename": "l_graph-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ab26b2bff09b86c0cd9ba136c201e5e2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7160, "upload_time": "2019-05-13T13:33:27", "url": "https://files.pythonhosted.org/packages/c9/c4/b18f00bcd00c50ee0a8844e9701609f4c575ba2718b5ce257697f46416d6/l_graph-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a864dbb7543007e80037391e41d4a5e", "sha256": "ede1ba6d0a602e7f933dbb753a508eb900db6feea3a9d21adf2c471bc4d1082f" }, "downloads": -1, "filename": "l-graph-0.2.2.tar.gz", "has_sig": false, "md5_digest": "7a864dbb7543007e80037391e41d4a5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5448, "upload_time": "2019-05-13T13:33:29", "url": "https://files.pythonhosted.org/packages/18/83/fd7938e19d971a00fb1ec0420b52ee29fb207631eb600043a38778d24094/l-graph-0.2.2.tar.gz" } ] }