# DFA Mutate
Primitives and utilities for manipulating deterministic finite automata (DFA) represented using the [dfa](https://github.com/mvcisback/dfa) library.
[](https://cloud.drone.io/mvcisback/dfa_mutate)
[](https://badge.fury.io/py/dfa_mutate)
[](https://opensource.org/licenses/MIT)
**Table of Contents**
- [Installation](#installation)
- [Usage](#usage)
Installation
If you just need to use `dfa_mutate`, you can just run:
`$ pip install dfa_mutate`
For developers, note that this project uses the
[poetry](https://poetry.eustace.io/) python package/dependency
management tool. Please familarize yourself with it and then
run:
`$ poetry install`
# Usage
**Example Usage:**
```python
from dfa import DFA
import dfa_mutate
dfa1 = DFA(
start=0,
inputs={0, 1},
label=lambda s: (s % 4) == 3,
transition=lambda s, c: (s + c) % 4,
)
# Pick a specific mutation.
dfa2 = dfa_mutate.add_state(dfa1)
dfa3 = dfa_mutate.change_start(dfa1)
dfa4 = dfa_mutate.change_transition(dfa1)
dfa5 = dfa_mutate.relabel_state(dfa1)
# Infinite Generator mutations round-robin (will repeat).
dfas = dfa_mutate.generate_mutations(orig)
# Sample DFA using softmax over a scoring function (default constant).
# Uses first n dfas generated by above generator.
# NOTE: requires the optional numpy dependency.
dfa6 = dfa_mutate.sample_mutation(dfa1, n=20, score=lambda d: len(d.states()))
# All functions support passing in random number generator.
import random
dfa7 = dfa_mutate.relabel_state(dfa1, random.Random(0))
```
Raw data
{
"_id": null,
"home_page": "https://github.com/mvcisback/dfa-mutate",
"name": "dfa-mutate",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9,<4.0",
"maintainer_email": "",
"keywords": "",
"author": "Marcell Vazquez-Chanlatte",
"author_email": "mvc@linux.com",
"download_url": "https://files.pythonhosted.org/packages/40/85/c461a2eb1ff129cdb3043674b1e75918056fceb7dc5b5e3de9e8087901f9/dfa_mutate-0.1.3.tar.gz",
"platform": null,
"description": "# DFA Mutate\n\nPrimitives and utilities for manipulating deterministic finite automata (DFA) represented using the [dfa](https://github.com/mvcisback/dfa) library.\n\n[](https://cloud.drone.io/mvcisback/dfa_mutate)\n[](https://badge.fury.io/py/dfa_mutate)\n[](https://opensource.org/licenses/MIT)\n\n**Table of Contents**\n\n- [Installation](#installation)\n- [Usage](#usage)\n\n\n Installation\n\nIf you just need to use `dfa_mutate`, you can just run:\n\n`$ pip install dfa_mutate`\n\nFor developers, note that this project uses the\n[poetry](https://poetry.eustace.io/) python package/dependency\nmanagement tool. Please familarize yourself with it and then\nrun:\n\n`$ poetry install`\n\n# Usage\n\n**Example Usage:**\n```python\nfrom dfa import DFA\nimport dfa_mutate\n\ndfa1 = DFA(\n start=0,\n inputs={0, 1},\n label=lambda s: (s % 4) == 3,\n transition=lambda s, c: (s + c) % 4,\n)\n\n# Pick a specific mutation.\ndfa2 = dfa_mutate.add_state(dfa1)\ndfa3 = dfa_mutate.change_start(dfa1)\ndfa4 = dfa_mutate.change_transition(dfa1)\ndfa5 = dfa_mutate.relabel_state(dfa1)\n\n# Infinite Generator mutations round-robin (will repeat).\ndfas = dfa_mutate.generate_mutations(orig)\n\n# Sample DFA using softmax over a scoring function (default constant).\n# Uses first n dfas generated by above generator.\n\n# NOTE: requires the optional numpy dependency.\ndfa6 = dfa_mutate.sample_mutation(dfa1, n=20, score=lambda d: len(d.states()))\n\n# All functions support passing in random number generator.\nimport random\ndfa7 = dfa_mutate.relabel_state(dfa1, random.Random(0))\n```\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Library for mutating a DFA represented using the dfa library.",
"version": "0.1.3",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "9fe06bffb032b35a2545ae3bf252f02cbf9cda30d4b43bdb77f766f5078ae81b",
"md5": "9ded67290d559d1ba86b492e1838f6d3",
"sha256": "abe00e8afb4b7bf164806d3696caa1e511b2e869ac272f22b8e8afee4018d5ed"
},
"downloads": -1,
"filename": "dfa_mutate-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9ded67290d559d1ba86b492e1838f6d3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9,<4.0",
"size": 3643,
"upload_time": "2023-04-23T22:30:49",
"upload_time_iso_8601": "2023-04-23T22:30:49.604891Z",
"url": "https://files.pythonhosted.org/packages/9f/e0/6bffb032b35a2545ae3bf252f02cbf9cda30d4b43bdb77f766f5078ae81b/dfa_mutate-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4085c461a2eb1ff129cdb3043674b1e75918056fceb7dc5b5e3de9e8087901f9",
"md5": "e32451adbccc85085567ca796e0300ab",
"sha256": "285bec27221f8aee9d992b3d9ecfd176be5e0f71c2d94af579af3b29ade16030"
},
"downloads": -1,
"filename": "dfa_mutate-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "e32451adbccc85085567ca796e0300ab",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9,<4.0",
"size": 3708,
"upload_time": "2023-04-23T22:30:51",
"upload_time_iso_8601": "2023-04-23T22:30:51.557269Z",
"url": "https://files.pythonhosted.org/packages/40/85/c461a2eb1ff129cdb3043674b1e75918056fceb7dc5b5e3de9e8087901f9/dfa_mutate-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-23 22:30:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "mvcisback",
"github_project": "dfa-mutate",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "dfa-mutate"
}