dfa-mutate


Namedfa-mutate JSON
Version 0.1.3 PyPI version JSON
download
home_pagehttps://github.com/mvcisback/dfa-mutate
SummaryLibrary for mutating a DFA represented using the dfa library.
upload_time2023-04-23 22:30:51
maintainer
docs_urlNone
authorMarcell Vazquez-Chanlatte
requires_python>=3.9,<4.0
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # DFA Mutate

Primitives and utilities for manipulating deterministic finite automata (DFA) represented using the [dfa](https://github.com/mvcisback/dfa) library.

[![Build Status](https://cloud.drone.io/api/badges/mvcisback/dfa_mutate/status.svg)](https://cloud.drone.io/mvcisback/dfa_mutate)
[![PyPI version](https://badge.fury.io/py/dfa_mutate.svg)](https://badge.fury.io/py/dfa_mutate)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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[![Build Status](https://cloud.drone.io/api/badges/mvcisback/dfa_mutate/status.svg)](https://cloud.drone.io/mvcisback/dfa_mutate)\n[![PyPI version](https://badge.fury.io/py/dfa_mutate.svg)](https://badge.fury.io/py/dfa_mutate)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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"
}
        
Elapsed time: 0.06231s