Skip to main content
=========
Pythomata
=========


.. image:: https://img.shields.io/pypi/v/pythomata.svg
:target: https://pypi.python.org/pypi/pythomata

.. image:: https://img.shields.io/pypi/pyversions/pythomata.svg
:target: https://pypi.python.org/pypi/pythomata

.. image:: https://img.shields.io/badge/status-development-orange.svg
:target: https://img.shields.io/badge/status-development-orange.svg

.. image:: https://img.shields.io/travis/MarcoFavorito/pythomata.svg
:target: https://travis-ci.org/MarcoFavorito/pythomata

.. image:: https://readthedocs.org/projects/pythomata/badge/?version=latest
:target: https://pythomata.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status

.. image:: https://codecov.io/gh/MarcoFavorito/pythomata/branch/master/graph/badge.svg
:alt: Codecov coverage
:target: https://codecov.io/gh/MarcoFavorito/pythomata/branch/master/graph/badge.svg


Python implementation of automata.


* Free software: MIT license
* Documentation: https://pythomata.readthedocs.io.

Install
-------

.. code-block:: console

$ wget http://ftp.it.debian.org/debian/pool/main/g/graphviz/graphviz_2.38.0-17_amd64.deb
$ sudo dpkg -i graphviz_2.38.0-1~saucy_amd64.deb
$ sudo apt-get install -f

How to use
--------

* Define an automaton:

.. code-block:: python

a, b, c = Symbol("a"), Symbol("b"), Symbol("c")
alphabet = Alphabet({a, b, c})
states = frozenset({"s1", "s2", "s3"})
initial_state = "s1"
accepting_states = frozenset({"s3"})
transition_function = {
"s1": {
b : "s1",
a : "s2"
},
"s2": {
a : "s3",
b : "s1"
},
"s3":{
c : "s3"
}
}

dfa = DFA(alphabet, states, initial_state, accepting_states, transition_function)

* Test word acceptance:

.. code-block:: python

# a word is a list of symbols
word = [b, b, b, a, b, c]

dfa.word_acceptance(word) # True

# without the last symbol c, the final state is not reached
dfa.word_acceptance(word[:-1]) # False

* Operations such as minimization and trimming:

.. code-block:: python


dfa_minimized = dfa.minimize()
dfa_trimmed = dfa.trim()

* Print the automata:

.. code-block:: python

filepath = "./my_awesome_automaton"
dfa.minimize().trim().to_dot(filepath)

The output in .svg format is the following:

.. image:: https://github.com/MarcoFavorito/pythomata/tree/master/docs/my_awesome_automaton.svg


Features
--------

* Basic DFA and NFA support;
* Algorithms for DFA minimization and trimming;
* Algorithm for NFA determinization;
* Print automata in SVG format.

Credits
-------

This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage


=======
History
=======

0.1.0 (2018-03-13)
------------------

* First release on PyPI.

0.1.1 (2018-03-15)
------------------

* Basic DFA and NFA support;
* Algorithms for DFA minimization and trimming;
* Algorithm for NFA determinization.

0.1.2 (2018-03-16)
------------------

* Minor bug fixes

0.1.3 (2018-03-16)
------------------

* Changes in word acceptance procedure for DFAs

Metadata

Release files for pythomata 0.1.5.post2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pythomata 0.1.5.post2
File Size Uploaded
pythomata-0.1.5.post2.tar.gz 70.4 kB Details

Release files / pythomata-0.1.5.post2.tar.gz

Download URL pythomata-0.1.5.post2.tar.gz
Size 70.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ca6c48faeb64d2ef306b3fc9eccab8b4e3eb8a59a8258802251e148eacd7b6a2
BLAKE2b-256 checksum
How to use checksums
efb084023d1476d3950adcf91a523e70e415b67f89b059b6a727bed912d2251b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.9.1 pkginfo/1.4.1 requests/2.18.4 setuptools/38.5.1 requests-toolbelt/0.8.0 tqdm/4.19.5 CPython/2.7.12
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page