{ "info": { "author": "Marco Favorito", "author_email": "marco.favorito@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# Pythomata\n\n\n[![](https://img.shields.io/pypi/v/pythomata.svg)](https://pypi.python.org/pypi/pythomata)\n[![](https://img.shields.io/travis/marcofavorito/pythomata.svg)](https://travis-ci.org/marcofavorito/pythomata)\n[![](https://img.shields.io/pypi/pyversions/pythomata.svg)](https://pypi.python.org/pypi/pythomata)\n[![](https://img.shields.io/badge/docs-mkdocs-9cf)](https://www.mkdocs.org/)\n[![](https://img.shields.io/badge/status-development-orange.svg)](https://img.shields.io/badge/status-development-orange.svg)\n[![](https://coveralls.io/repos/github/marcofavorito/pythomata/badge.svg?branch=master)](https://coveralls.io/github/marcofavorito/pythomata?branch=master)\n[![](https://img.shields.io/badge/flake8-checked-blueviolet)](https://img.shields.io/badge/flake8-checked-blueviolet)\n[![](https://img.shields.io/badge/mypy-checked-blue)](https://img.shields.io/badge/mypy-checked-blue)\n[![](https://img.shields.io/badge/license-Apache%202-lightgrey)](https://img.shields.io/badge/license-Apache%202-lightgrey)\n\nPython implementation of automata theory.\n\n\n* Free software: Apache 2.0\n* Documentation: https://marcofavorito.github.io/pythomata.\n\n## Dependencies\n\n### Graphviz\n\n\nFor Debian systems, the following commands should work:\n\n $ wget http://ftp.it.debian.org/debian/pool/main/g/graphviz/graphviz_2.38.0-17_amd64.deb\n $ sudo dpkg -i graphviz_2.38.0-1~saucy_amd64.deb\n $ sudo apt-get install -f\n\nOtherwise check the installation guide from the [official site](https://www.graphviz.org/download/).\n\n## Install\n\nInstall from `master` branch:\n\n- with `pip`:\n\n\n pip3 install git+https://github.com/marcofavorito/pythomata.git\n\n\n- or, clone the repository and install:\n\n\n git clone htts://github.com/marcofavorito/pythomata.git\n cd temprl\n pip install .\n\n\n\n## How to use\n\n* Define an automaton:\n\n```python\nfrom pythomata.dfa import DFA\nalphabet = {\"a\", \"b\", \"c\"}\nstates = {\"s1\", \"s2\", \"s3\"}\ninitial_state = \"s1\"\naccepting_states = {\"s3\"}\ntransition_function = {\n \"s1\": {\n \"b\" : \"s1\",\n \"a\" : \"s2\"\n },\n \"s2\": {\n \"a\" : \"s3\",\n \"b\" : \"s1\"\n },\n \"s3\":{\n \"c\" : \"s3\"\n }\n}\ndfa = DFA(states, alphabet, initial_state, accepting_states, transition_function) \n```\n\n* Test word acceptance:\n\n```python\n# a word is a list of symbols\nword = [b, b, b, a, b, c]\n\ndfa.accepts(word) # True\n\n# without the last symbol c, the final state is not reached\ndfa.accepts(word[:-1]) # False\n```\n\n* Operations such as minimization and trimming:\n\n```python\ndfa_minimized = dfa.minimize()\ndfa_trimmed = dfa.trim()\n```\n\n* Print the automata:\n\n```python\nfilepath = \"./my_awesome_automaton\"\ndfa.minimize().trim().to_dot(filepath)\n```\n\nThe output in .svg format is the following:\n\n![](img/my_awesome_automaton.svg)\n\n\n## Features\n\n\n* Basic DFA and NFA support;\n* Algorithms for DFA minimization and trimming;\n* Algorithm for NFA determinization;\n* Print automata in SVG format.\n\n\n## Tests\n\nTo run the tests:\n\n tox\n\nTo run only the code style checks:\n\n tox -e flake8\n\n## Docs\n\nTo build the docs:\n\n\n mkdocs build\n \n\nTo view documentation in a browser\n\n\n mkdocs serve\n\n\nand then go to [http://localhost:8000](http://localhost:8000)\n\n\n## License\n\nCopyright 2018-2019 Marco Favorito\n\n\n\n# History\n\n## 0.1.0 (2019-04-13)\n\n* Basic support for DFAs and NFAs.\n* Algorithms for DFA minimization and trimming.\n* Algorithm for NFA determinization.\n\n## 0.2.0 (2019-09-30)\n\n* Refactoring of the repository", "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/marcofavorito/pythomata.git", "keywords": "pythomata", "license": "Apache License", "maintainer": "", "maintainer_email": "", "name": "pythomata", "package_url": "https://pypi.org/project/pythomata/", "platform": "", "project_url": "https://pypi.org/project/pythomata/", "project_urls": { "Homepage": "https://github.com/marcofavorito/pythomata.git" }, "release_url": "https://pypi.org/project/pythomata/0.2.0/", "requires_dist": null, "requires_python": "", "summary": "A Python package implementing automata.", "version": "0.2.0" }, "last_serial": 5907509, "releases": { "0.1.3": [ { "comment_text": "", "digests": { "md5": "8a428ede8c388cccf76505131d7f92d7", "sha256": "137e354cd42db233227bdfa7b99a0ff6f8cd30bc8ef186ccf7d35498b3c1105a" }, "downloads": -1, "filename": "pythomata-0.1.3.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "8a428ede8c388cccf76505131d7f92d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13248, "upload_time": "2018-04-15T14:28:38", "url": "https://files.pythonhosted.org/packages/ba/b4/e10201471c7c6d285843f00bb262053daa997efc8c69578ece5e1dcdf9fc/pythomata-0.1.3.linux-x86_64.tar.gz" } ], "0.1.4.post1": [ { "comment_text": "", "digests": { "md5": "663b6b2df1fd3b1d3f508ab85f1dcf49", "sha256": "54455a3df83cb08b687489d9dda413e884b0d1abf75194889cfac42a3392fc79" }, "downloads": -1, "filename": "pythomata-0.1.4.post1.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "663b6b2df1fd3b1d3f508ab85f1dcf49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12522, "upload_time": "2018-04-17T20:14:17", "url": "https://files.pythonhosted.org/packages/04/54/52fdfc28f9fe1d5b2fe0727bf466b0f18ff3bddf73003c0958787794d372/pythomata-0.1.4.post1.linux-x86_64.tar.gz" } ], "0.1.4.post2": [ { "comment_text": "", "digests": { "md5": "38ed3dbd2cdd7010b3854955f07601dd", "sha256": "00de068d1c434a87c1666612c8b23567c65c58ba523402c3fd8a49b3df25c4ca" }, "downloads": -1, "filename": "pythomata-0.1.4.post2.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "38ed3dbd2cdd7010b3854955f07601dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13105, "upload_time": "2018-04-17T20:17:05", "url": "https://files.pythonhosted.org/packages/e9/4e/62c08e7a5d0adc7e724de0a220939eaf81731adb97cd7dbe1470db0a863c/pythomata-0.1.4.post2.linux-x86_64.tar.gz" } ], "0.1.4.post3": [ { "comment_text": "", "digests": { "md5": "d7cfba24c7c6463c54fd1cd5e7b87705", "sha256": "b3e865be7d30c343ccdc84ecdf4288bf96f71d037fc27059148c9ae242942980" }, "downloads": -1, "filename": "pythomata-0.1.4.post3.tar.gz", "has_sig": false, "md5_digest": "d7cfba24c7c6463c54fd1cd5e7b87705", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52856, "upload_time": "2018-04-17T20:22:02", "url": "https://files.pythonhosted.org/packages/84/6b/eec5736e6e40a5bcff84b74ddbe05b974e5bd11091e03d416c21abb671a0/pythomata-0.1.4.post3.tar.gz" } ], "0.1.4.post4": [ { "comment_text": "", "digests": { "md5": "778256a5f0696d5eb200d211a565eed1", "sha256": "6478798ee6faab3824bc087a2aa09052d66b90afaeaaaa34c635a0f06b2e9fd9" }, "downloads": -1, "filename": "pythomata-0.1.4.post4.tar.gz", "has_sig": false, "md5_digest": "778256a5f0696d5eb200d211a565eed1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53331, "upload_time": "2018-04-18T16:54:30", "url": "https://files.pythonhosted.org/packages/94/1b/6050e993eae8144744c85b4d00d4a6c5d75ba1c65684e844a3d43ba649b3/pythomata-0.1.4.post4.tar.gz" } ], "0.1.4.post5": [ { "comment_text": "", "digests": { "md5": "2a355eb4b3c22f425977487b2cc5ddef", "sha256": "965a2b002186e727b3dff0f8ce007ee08adc5050bad2cf8a425b331b1dcf8455" }, "downloads": -1, "filename": "pythomata-0.1.4.post5.tar.gz", "has_sig": false, "md5_digest": "2a355eb4b3c22f425977487b2cc5ddef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53143, "upload_time": "2018-05-03T11:19:39", "url": "https://files.pythonhosted.org/packages/93/eb/b163a4bb49f15423da029c266c6f36bac7b57fcbddd98ff73ba121465104/pythomata-0.1.4.post5.tar.gz" } ], "0.1.4.post6": [], "0.1.4.post7": [ { "comment_text": "", "digests": { "md5": "ca70e31e5788e40347160041d3e19d19", "sha256": "bbb1ae9ed00c7d1bef761d18d03e61c95a32ee47cd1c806daefa1db8c3c3f7c9" }, "downloads": -1, "filename": "pythomata-0.1.4.post7.tar.gz", "has_sig": false, "md5_digest": "ca70e31e5788e40347160041d3e19d19", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71852, "upload_time": "2018-05-07T17:07:46", "url": "https://files.pythonhosted.org/packages/f6/d2/74417de475b994399d4256788aa7665baa85cfbe71d876058c739b3c6aa0/pythomata-0.1.4.post7.tar.gz" } ], "0.1.4.post8": [ { "comment_text": "", "digests": { "md5": "86ae377b0a73085e7dbb91a04975bf10", "sha256": "39dbb21088275e5be363c73d2383cf680c7b513dd91eca7afb4752ad422f15c5" }, "downloads": -1, "filename": "pythomata-0.1.4.post8.tar.gz", "has_sig": false, "md5_digest": "86ae377b0a73085e7dbb91a04975bf10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71131, "upload_time": "2018-05-21T21:25:59", "url": "https://files.pythonhosted.org/packages/3b/bf/98154738746d4d3ae26010abc2393fff4724176ae6588d4602e950e8c38f/pythomata-0.1.4.post8.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "f2267431bcb381dabfdb365d90a98162", "sha256": "de5e9e7cce4c9ce714d5d7a124af3db244cad608e2961c69ab06526b7289a904" }, "downloads": -1, "filename": "pythomata-0.1.5.tar.gz", "has_sig": false, "md5_digest": "f2267431bcb381dabfdb365d90a98162", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70302, "upload_time": "2018-06-30T21:17:10", "url": "https://files.pythonhosted.org/packages/7b/78/c91cdbd19142ebce7986227e08b0122ccfb333d5a3da1c6a9f27d6be06b0/pythomata-0.1.5.tar.gz" } ], "0.1.5.post1": [ { "comment_text": "", "digests": { "md5": "fe25340e652d11c5b2c490351c62d480", "sha256": "24eba89c8c717a5a32ac9b5b6b64cc9b99f464e08737ab9b07458b5e4e52586d" }, "downloads": -1, "filename": "pythomata-0.1.5.post1.tar.gz", "has_sig": false, "md5_digest": "fe25340e652d11c5b2c490351c62d480", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70531, "upload_time": "2018-08-05T11:24:49", "url": "https://files.pythonhosted.org/packages/c1/ae/04c46ea17aa1f8f94311c91a67f6f1d87892a694316b2b47bb8f46c952f3/pythomata-0.1.5.post1.tar.gz" } ], "0.1.5.post2": [ { "comment_text": "", "digests": { "md5": "bc74ae9d92c2fd61c7e4d6f9819cd69d", "sha256": "ca6c48faeb64d2ef306b3fc9eccab8b4e3eb8a59a8258802251e148eacd7b6a2" }, "downloads": -1, "filename": "pythomata-0.1.5.post2.tar.gz", "has_sig": false, "md5_digest": "bc74ae9d92c2fd61c7e4d6f9819cd69d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70356, "upload_time": "2018-10-07T16:39:30", "url": "https://files.pythonhosted.org/packages/ef/b0/84023d1476d3950adcf91a523e70e415b67f89b059b6a727bed912d2251b/pythomata-0.1.5.post2.tar.gz" } ], "0.1.5.post3": [ { "comment_text": "", "digests": { "md5": "51393baf6c8a430f3485b62ca6214924", "sha256": "51e5e92abc34075209bdc158124348c02dc40526cab2d1b8bfd5572e78f380d2" }, "downloads": -1, "filename": "pythomata-0.1.5.post3.tar.gz", "has_sig": false, "md5_digest": "51393baf6c8a430f3485b62ca6214924", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70737, "upload_time": "2018-10-07T16:53:43", "url": "https://files.pythonhosted.org/packages/3c/34/a734864ade12bd7d762ea75dc80693bb4f7a13d60a71122022577039b8c6/pythomata-0.1.5.post3.tar.gz" } ], "0.1.7rc0": [ { "comment_text": "", "digests": { "md5": "7a48a718bf445a29a48166435d1ca5fb", "sha256": "2b723d0cb5bb16fc2da5859a329c8901f0ce68e0c36fb778e138c406fe5cb7d6" }, "downloads": -1, "filename": "pythomata-0.1.7rc0.tar.gz", "has_sig": false, "md5_digest": "7a48a718bf445a29a48166435d1ca5fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24695, "upload_time": "2019-04-07T14:52:17", "url": "https://files.pythonhosted.org/packages/34/d9/e55a7ac25186c632ab0bdba72f0cf910f40534b3d445ba8c02a4bedaafdd/pythomata-0.1.7rc0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d62602e166e79f60b3c990519086c77e", "sha256": "e2db686d76c986b1ecef9c9c45a9c87092c13589537df3c55d692493b3f9be54" }, "downloads": -1, "filename": "pythomata-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d62602e166e79f60b3c990519086c77e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18863, "upload_time": "2019-09-30T15:24:37", "url": "https://files.pythonhosted.org/packages/c4/eb/32851bf482c686de0a42810351444abed0fb1a36d8772e230014b17b6d1c/pythomata-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d62602e166e79f60b3c990519086c77e", "sha256": "e2db686d76c986b1ecef9c9c45a9c87092c13589537df3c55d692493b3f9be54" }, "downloads": -1, "filename": "pythomata-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d62602e166e79f60b3c990519086c77e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18863, "upload_time": "2019-09-30T15:24:37", "url": "https://files.pythonhosted.org/packages/c4/eb/32851bf482c686de0a42810351444abed0fb1a36d8772e230014b17b6d1c/pythomata-0.2.0.tar.gz" } ] }