{ "info": { "author": "Sam Coope", "author_email": "sam.j.coope@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "A very-simple-subset-of-haskell fuzzer. With the ability to generate lexical tokens as well as plain code.\n\n```\nmodule Generated (function0,function1,function2) where\n\nfunction0 :: Int -> Bool -> Bool -> Bool -> Bool -> Int -> Int\nfunction0 a b c d e f = (function1 (2 /= 7) False False)\n\nfunction1 :: Bool -> Bool -> Bool -> Int\nfunction1 a b c = (8 * 0)\n\nfunction2 :: Bool -> Int\nfunction2 a = 1\n```\n\nit's available on pip by `pip install huzzer` (python3+ only)\n\n## Using `huzzer`\n\nThe easiest way to use `huzzer` is from the command line:\n\n```\n>>>>> huzz\nmodule Generated (function0,function1,function2) where\n\nfunction0 :: Bool -> Bool\nfunction0 a = ((function2 4 (0 >= 5)) <= ((mod 8 9) + (1 - (function2 0 a))))\n\nfunction1 :: Bool -> Int -> Int -> Bool -> Bool\nfunction1 a b c d = ((a && a) && (function0 (function1 True b c d)))\n\nfunction2 :: Int -> Bool -> Int\nfunction2 a b = (div (function2 (max a a) b) 3)\n```\n\nThere are some options to vary the complexity of programs:\n```bash\n>>>>> huzz -h\nHuzz.\n\nUsage:\n huzz [--seed=] [--max-args=] [--expr-depth=]\n huzz -h | --help\n\nOptions:\n -h --help Show this screen.\n -s --seed= Use to initialise RNG.\n -a --max-args= Maximum number of arguments a function can have [default: 8].\n -e --expr-depth= Maximum expression depth [default: 6].\n```\n\n### Using From Inside Python\n\n```python\nfrom huzzer.huzz import huzzer\nfrom huzzer.tokenizing import tokenize\n\nseed = 1337\n\nrandom_haskell_code = huzzer(\n seed,\n max_expression_depth=4,\n max_type_signiature_length=5,\n max_number_of_functions=3,\n)\n\n\ntokens = tokenize(random_haskell_code)\n\nnon_whitespace_token_ids = [x.type for x in tokens if x.channel == 0]\n\nprint(random_haskell_code)\nprint('======================')\nprint(non_whitespace_token_ids)\n\n```\n```sh\nmodule Generated (function0,function1,function2) where\n\nfunction0 :: Bool -> Int -> Bool -> Bool -> Bool\nfunction0 a b c d = ((function1 9) && (function0 d 1 d (function0 c b d d)))\n\nfunction1 :: Int -> Bool\nfunction1 a = (False || True)\n\nfunction2 :: Bool -> Int -> Bool -> Bool -> Bool\nfunction2 a b c d = (function2 True 9 False c)\n======================\n[1, 2, 51, 16, 4, 17, 4, 18, 52, 3, 53, 16, 5, 37, 6, 38, 6, 37, 6, 37, 6, 37, 53, 16, 8, 9, 10, 11, 7, 51, 51, 17, 48, 52, 36, 51, 16, 11, 40, 11, 51, 16, 10, 9, 11, 11, 52, 52, 52, 53, 17, 5, 38, 6, 37, 53, 17, 8, 7, 51, 50, 35, 49, 52, 53, 18, 5, 37, 6, 38, 6, 37, 6, 37, 6, 37, 53, 18, 8, 9, 10, 11, 7, 51, 18, 49, 48, 50, 10, 52]\n\n```\n\n\n\n## Setup\nMake sure you have python3 on your machine (`which python3` should print a path to it).\n\nSet up a `virtualenv` with `virtualenv -p \\`which python3\\` env`\n\nActivate the environment with `source env/bin/activate`\n\nInstall requirements `pip install -r requirements.txt`\n\nThen you should be good to go. To leave the virtualenv, type `deactivate`\n\n\n## Testing\nTo run all of the tests, run `nosetests`.\n\nTo run larger acceptance tests (against the ghc compiler), you will need `ghc` and `parallel` installed.\nrun `./large_acceptance_test.sh `\n\n## TODOs\n* multiple definitions for functions\n\n### Distribution\n```\npython setup.py sdist bdist_wheel\ntwine upload dist/*\n```\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/coopie/huzzer", "keywords": "haskell fuzzer generator", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "huzzer", "package_url": "https://pypi.org/project/huzzer/", "platform": "", "project_url": "https://pypi.org/project/huzzer/", "project_urls": { "Homepage": "https://github.com/coopie/huzzer" }, "release_url": "https://pypi.org/project/huzzer/0.1.2/", "requires_dist": [ "docopt", "antlr4-python3-runtime (==4.6)" ], "requires_python": "", "summary": "A very-simple-subset-of-haskell fuzzer", "version": "0.1.2" }, "last_serial": 3161571, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "2e1bfa8be3ba19197622065ab3f45f69", "sha256": "e357a9c2fedec360dece4ae9f5ee1669a2a99585491dac9d94a25bb22581196d" }, "downloads": -1, "filename": "huzzer-0.0.1.tar.gz", "has_sig": false, "md5_digest": "2e1bfa8be3ba19197622065ab3f45f69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5792, "upload_time": "2016-11-21T18:37:40", "url": "https://files.pythonhosted.org/packages/75/20/5cb2a6a2cc3a44efdc45028e7993f33a0da2bd31f20d594132c21e0377c9/huzzer-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "28a68390bdeffff29dd4cbebebe191f1", "sha256": "09af865df196fca1956b344b0f3234162bd97989c7f24d2947f6f7c4d2272983" }, "downloads": -1, "filename": "huzzer-0.0.2.tar.gz", "has_sig": false, "md5_digest": "28a68390bdeffff29dd4cbebebe191f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6300, "upload_time": "2016-11-21T18:46:19", "url": "https://files.pythonhosted.org/packages/b5/ab/c8d094dd79ec9a9753b84e40c5c25d781e3911bb22982ce913ae4f67faec/huzzer-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "4766843cc72912210982cff5f0ee04d9", "sha256": "c63dbaede3017b82e344ddc8dcd3a7f40a7514d479d1893eef8df9af52f8d745" }, "downloads": -1, "filename": "huzzer-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "4766843cc72912210982cff5f0ee04d9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8726, "upload_time": "2016-12-03T15:38:48", "url": "https://files.pythonhosted.org/packages/51/9c/a75828787e8e73d2f7b2d3a850f987c5c5f528b9f083388fb0196bba778c/huzzer-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3cc6c49a6356e5a41e613db191d6d3e5", "sha256": "ca642ac4fb4413d272f4e980a0492aa30286911dc151067e36fc6d47e5f5c3db" }, "downloads": -1, "filename": "huzzer-0.0.3.tar.gz", "has_sig": false, "md5_digest": "3cc6c49a6356e5a41e613db191d6d3e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6564, "upload_time": "2016-12-03T15:38:49", "url": "https://files.pythonhosted.org/packages/48/6a/181ed83670091191c4eb881514a680b22e253a4774374e6299f81a18df48/huzzer-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "5964ffdf849cef417bb982c4fe59e895", "sha256": "e9fdb1a8a09544ab3d9315f2c625560983bc484d13874aa5db1a7236d0e1684f" }, "downloads": -1, "filename": "huzzer-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5964ffdf849cef417bb982c4fe59e895", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20568, "upload_time": "2016-12-31T14:26:34", "url": "https://files.pythonhosted.org/packages/e0/37/5b6bd2f824414d149d3193c28c09c2a806a731e8b0f521285d9970738226/huzzer-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2ae18be978622ed1c7b12c1b1888af13", "sha256": "dfc6d0e2837c31b58667ecdeb95d72a1cfbdb249ef4026f69cd70f40b43656c5" }, "downloads": -1, "filename": "huzzer-0.0.4.tar.gz", "has_sig": false, "md5_digest": "2ae18be978622ed1c7b12c1b1888af13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16840, "upload_time": "2016-12-31T14:26:36", "url": "https://files.pythonhosted.org/packages/e6/4f/8b442f6aba415035f536d9ce44604695bed62bcb32b2be4b623e3f74f1d1/huzzer-0.0.4.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "b2125e61881e1775e44df71ee1e4f564", "sha256": "1aee83bb5931462714c3db5dc965eba81d21ea7165a05157a2238d76e820fb67" }, "downloads": -1, "filename": "huzzer-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b2125e61881e1775e44df71ee1e4f564", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20762, "upload_time": "2017-01-09T11:56:18", "url": "https://files.pythonhosted.org/packages/66/d2/a2ecbb528f6ecd730ed515469102098eb0a15f85c751c22817e7e473968a/huzzer-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3f92ae8797a39da3ae1f36326bcbc7b5", "sha256": "9da8d9ced3a3c7b80f4bf1c96bcbcd2629aeb99e77ab2800f5c1380dbe8ab97e" }, "downloads": -1, "filename": "huzzer-0.1.0.tar.gz", "has_sig": false, "md5_digest": "3f92ae8797a39da3ae1f36326bcbc7b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16853, "upload_time": "2017-01-09T11:56:19", "url": "https://files.pythonhosted.org/packages/7e/fa/5b47c6a3a6514768f35fb7ff57c230e43949c0b27cced9fe597f034542d8/huzzer-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "6714dff32c359a59a674f422b9b27ed3", "sha256": "d5d8edee2f475d93c4bbbea0d1e6799b23900a6647c6f4ce69aab336acaac350" }, "downloads": -1, "filename": "huzzer-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6714dff32c359a59a674f422b9b27ed3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20801, "upload_time": "2017-05-21T12:41:50", "url": "https://files.pythonhosted.org/packages/ea/02/0b3425026bdbfd8fc022e1c9a68ae8615386649761efa4517da462291059/huzzer-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b20db6d64b15f97b68b8f80775a378d0", "sha256": "8e9344c01ee047c92158ad86b3b2e9df513f9df8bd06485ad2056cd90b035999" }, "downloads": -1, "filename": "huzzer-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b20db6d64b15f97b68b8f80775a378d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16906, "upload_time": "2017-05-21T12:41:51", "url": "https://files.pythonhosted.org/packages/11/97/7741839bfeaae7bf65108c8d4b44e38976137f39bbf0c4f98ba249f89c57/huzzer-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "05689d89f547d6990e468fae6cea8ab6", "sha256": "54a0ecfd1c08d7c280cc752d0a4a4cff73bf2928c42f2620c64a7ecf3c0da033" }, "downloads": -1, "filename": "huzzer-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "05689d89f547d6990e468fae6cea8ab6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22437, "upload_time": "2017-09-09T10:58:28", "url": "https://files.pythonhosted.org/packages/dc/6d/45f411c332ed0a6fbb8ee9d3a015618b4fb512bad238e9c160c35834414b/huzzer-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d77460bcb1ebc29a9f3699a26301b067", "sha256": "2f4f7912263f66ac6f5b9b641f105e69d4f41da8684e90a728ce4c2b5ed9178e" }, "downloads": -1, "filename": "huzzer-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d77460bcb1ebc29a9f3699a26301b067", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17791, "upload_time": "2017-09-09T10:58:30", "url": "https://files.pythonhosted.org/packages/f9/c6/655336e5e9b92d09ac1a18f535b9c406c4b16d764cdb459ef0ce9f1a38ef/huzzer-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "05689d89f547d6990e468fae6cea8ab6", "sha256": "54a0ecfd1c08d7c280cc752d0a4a4cff73bf2928c42f2620c64a7ecf3c0da033" }, "downloads": -1, "filename": "huzzer-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "05689d89f547d6990e468fae6cea8ab6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22437, "upload_time": "2017-09-09T10:58:28", "url": "https://files.pythonhosted.org/packages/dc/6d/45f411c332ed0a6fbb8ee9d3a015618b4fb512bad238e9c160c35834414b/huzzer-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d77460bcb1ebc29a9f3699a26301b067", "sha256": "2f4f7912263f66ac6f5b9b641f105e69d4f41da8684e90a728ce4c2b5ed9178e" }, "downloads": -1, "filename": "huzzer-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d77460bcb1ebc29a9f3699a26301b067", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17791, "upload_time": "2017-09-09T10:58:30", "url": "https://files.pythonhosted.org/packages/f9/c6/655336e5e9b92d09ac1a18f535b9c406c4b16d764cdb459ef0ce9f1a38ef/huzzer-0.1.2.tar.gz" } ] }