{ "info": { "author": "Valentin Berlier", "author_email": "berlier.v@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7" ], "description": "# \ud83c\udfa3 narmock\n\n[![Build Status](https://travis-ci.com/vberlier/narmock.svg?branch=master)](https://travis-ci.com/vberlier/narmock)\n[![PyPI](https://img.shields.io/pypi/v/narmock.svg)](https://pypi.org/project/narmock/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/narmock.svg)](https://pypi.org/project/narmock/)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\n> A minimal mocking utility for C projects.\n\nNarmock finds the functions mocked in your tests and generates mocks with a slick API.\n\n```c\n#include \n\n#include \"__mocks__.h\"\n#include \"narwhal.h\"\n\nTEST(example)\n{\n MOCK(time)->mock_return(42);\n\n ASSERT_EQ(time(NULL), 42);\n}\n```\n\n> This example is a test written with [Narwhal](https://github.com/vberlier/narwhal) but Narmock can be used with other test frameworks and anywhere in regular source code.\n\n## Installation\n\nThe package can be installed with `pip`.\n\n```bash\n$ pip install narmock\n```\n\n## Getting started\n\nThe command-line utility provides two essential commands that should make it possible to integrate Narmock in any kind of build system.\n\n```\nusage: narmock [-h] (-g [] | -f) [-d ] [-k []]\n\nA minimal mocking utility for C projects.\n\noptional arguments:\n -h, --help show this help message and exit\n -g [] generate mocks\n -f output linker flags\n -d mocks directory\n -k [] keep argument names\n```\n\n> Check out the [basic example](https://github.com/vberlier/narmock/tree/master/examples/basic) for a simple Makefile that integrates both [Narwhal](https://github.com/vberlier/narwhal) and Narmock.\n\n### Generating mocks\n\nThe `narmock -g` command finds the functions mocked in your code and generates a `__mocks__.c` file and a `__mocks__.h` file that respectively define and declare all the required mocks.\n\n```bash\n$ gcc -E *.c | narmock -g\n```\n\nNarmock requires source code to be expanded by the preprocessor. You can directly pipe the output of `gcc -E` to the command-line utility.\n\nBy default, `__mocks__.c` and `__mocks__.h` will be created in the current directory. You can specify a different output directory with the `-d` option.\n\n```bash\n$ gcc -E tests/*.c | narmock -g -d tests\n```\n\n### Retrieving linker flags\n\nThe `narmock -f` command reads the generated `__mocks__.h` file and outputs the necessary linker flags for linking all your source files together.\n\n```bash\n$ gcc $(narmock -f) *.c\n```\n\nBy default, the command looks for `__mocks__.h` in the current directory. You can specify a different directory with the `-d` option.\n\n```bash\n$ gcc $(narmock -f -d tests) tests/*.c\n```\n\n## Mock API\n\nThe `MOCK` macro returns a pointer to the mock API of a given function.\n\n```c\nMOCK(time);\n```\n\n### Mocking the returned value\n\nYou can make a function return a specific value without calling its original implementation.\n\n```c\nMOCK(time)->mock_return(42);\n\nprintf(\"%ld\\n\", time(NULL)); // Outputs 42\n```\n\n### Mocking the implementation\n\nYou can switch the implementation of a function.\n\n```c\ntime_t time_stub(time_t *timer)\n{\n return 42;\n}\n\nMOCK(time)->mock_implementation(time_stub);\n\nprintf(\"%ld\\n\", time(NULL)); // Outputs 42\n```\n\n### Mocking errno\n\nYou can make a function set `errno` to a specific value.\n\n```c\nMOCK(malloc)->mock_return(NULL)->mock_errno(ENOMEM);\n\nchar *ptr = malloc(42);\n\nprintf(\"%d\\n\", errno == ENOMEM); // Outputs 1\n```\n\n### Disabling the mock\n\nYou can disable the mock and make the function call its original implementation.\n\n```c\nMOCK(time)->disable_mock();\n\nprintf(\"%ld\\n\", time(NULL)); // Outputs the current time\n```\n\n### Counting and inspecting calls\n\nNarmock keeps track of the number of times mocked functions are called.\n\n```c\nprintf(\"%ld\\n\", time(NULL)); // Outputs the current time\n\nprintf(\"%ld\\n\", MOCK(time)->call_count); // Outputs 1\n```\n\nYou can also inspect the last call of a function. Note that the `last_call` pointer is `NULL` until the function gets called for the first time.\n\n```c\nprintf(\"%ld\\n\", time(NULL)); // Outputs the current time\n\nprintf(\"%p\\n\", MOCK(time)->last_call->arg1); // Outputs (nil)\nprintf(\"%ld\\n\", MOCK(time)->last_call->return_value); // Outputs the current time\n```\n\nThe value of `errno` is captured and saved in the `errsv` attribute.\n\n```c\nfopen(\"does_not_exist.txt\", \"r\");\n\nprintf(\"%d\\n\", MOCK(fopen)->last_call->errsv == ENOENT); // Outputs 1\n```\n\nBy default, the arguments are accessible through the sequential `arg1`, `arg2`, `...`, `argN` attributes. If you want to keep the original name of the arguments for a set of specific functions you can use the `-k` option when generating the mocks.\n\n```bash\n$ gcc -E *.c | narmock -g -k \"myprefix_.*\"\n```\n\nThe option takes a regular expression and generates mocks that use the original argument names for all the functions that match the regex.\n\n```bash\n$ gcc -E *.c | narmock -g -k\n```\n\nNote that the default regex is `.*` so here every function would be affected.\n\n### Resetting everything\n\nYou can reset the mock to its initial state. This will make the function use its original implementation and reset `call_count` to `0` and `last_call` to `NULL`.\n\n```c\nMOCK(time)->mock_return(42);\n\nprintf(\"%ld\\n\", time(NULL)); // Outputs 42\n\nMOCK(time)->reset();\n\nprintf(\"%ld\\n\", MOCK(time)->call_count); // Outputs 0\nprintf(\"%p\\n\", MOCK(time)->last_call); // Outputs (nil)\nprintf(\"%ld\\n\", time(NULL)); // Outputs the current time\n```\n\nYou can also call the `narmock_reset_all_mocks` function to reset all the mock.\n\n```c\nnarmock_reset_all_mocks();\n```\n\n## Contributing\n\nContributions are welcome. Feel free to open issues and suggest improvements. This project uses [poetry](https://poetry.eustace.io/) so you'll need to install it first if you want to be able to work with the project locally.\n\n```bash\n$ curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python\n```\n\nYou should now be able to install the required dependencies.\n\n```bash\n$ poetry install\n```\n\nThe code follows the [black](https://github.com/ambv/black) code style.\n\n```bash\n$ poetry run black narmock\n```\n\nYou can run the tests with `poetry run make -C tests`. The test suite is built with [Narwhal](https://github.com/vberlier/narwhal).\n\n```bash\n$ poetry run make -C tests\n```\n\n---\n\nLicense - [MIT](https://github.com/vberlier/narmock/blob/master/LICENSE)\n", "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/vberlier/narmock", "keywords": "c,mocking,tests,narwhal", "license": "MIT", "maintainer": "Valentin Berlier", "maintainer_email": "berlier.v@gmail.com", "name": "narmock", "package_url": "https://pypi.org/project/narmock/", "platform": "", "project_url": "https://pypi.org/project/narmock/", "project_urls": { "Documentation": "https://github.com/vberlier/narmock", "Homepage": "https://github.com/vberlier/narmock", "Repository": "https://github.com/vberlier/narmock" }, "release_url": "https://pypi.org/project/narmock/0.2.12/", "requires_dist": [ "pycparser (>=2.19,<3.0)", "jinja2 (>=2.10,<3.0)" ], "requires_python": ">=3.7,<4.0", "summary": "A minimal mocking utility for C projects.", "version": "0.2.12" }, "last_serial": 5989812, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "8165a56a7c06ac0ec20f2ab3d7a53060", "sha256": "946a37d97d8acfd8e475c4595680134a101a8c18d4acfd79dbf87ca800e0dbfd" }, "downloads": -1, "filename": "narmock-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8165a56a7c06ac0ec20f2ab3d7a53060", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 2567, "upload_time": "2019-07-07T11:15:00", "url": "https://files.pythonhosted.org/packages/be/59/c47b1fab5cb281e2db040dcdcc04dfcc6112ef457610a783aa37b55fceb8/narmock-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c894904fe135fb2e511cd6b6585eb04a", "sha256": "87ab76308bb983965576ac17b3c972b0eb8fc61d5230de2db76a4e796fdc531d" }, "downloads": -1, "filename": "narmock-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c894904fe135fb2e511cd6b6585eb04a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 1922, "upload_time": "2019-07-07T11:15:03", "url": "https://files.pythonhosted.org/packages/61/7b/dcca02cc68d3269d6ed11ebf0c8cc659b366c138720423571d9d40c7cead/narmock-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d3128fe4051423b37523f2c86536eb19", "sha256": "17ec7bb6a4c8092b3abbd7d1064f99a3c2e9b049939275bc0625bccbb9a19e09" }, "downloads": -1, "filename": "narmock-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d3128fe4051423b37523f2c86536eb19", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 10265, "upload_time": "2019-07-20T15:37:57", "url": "https://files.pythonhosted.org/packages/db/c7/698b4f1351f7af80f44708d4d788e60ad4666a56eb905631361d5fce3694/narmock-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "92c6e82d40bbebe6b5fc26fc0ed25420", "sha256": "4a3a90709fbb04ab85e15e000b6e9d4aef946e2f952ba5048c32fe4d2912483f" }, "downloads": -1, "filename": "narmock-0.1.1.tar.gz", "has_sig": false, "md5_digest": "92c6e82d40bbebe6b5fc26fc0ed25420", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 8555, "upload_time": "2019-07-20T15:37:58", "url": "https://files.pythonhosted.org/packages/e4/93/ee498722114e12422b43e261d658996d64b939cf87e1d53ec82700572989/narmock-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "99f4b37bd610779314a91aec9fed7145", "sha256": "e8c0baf5ba52cb2b417cab6b9156ee298d4924af3345b13496497ad8686951bd" }, "downloads": -1, "filename": "narmock-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "99f4b37bd610779314a91aec9fed7145", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 10549, "upload_time": "2019-07-20T16:52:23", "url": "https://files.pythonhosted.org/packages/a0/a5/4c655df6033772c798bcb71e0216c5475bde1022f1d7e2280263b1d963f3/narmock-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7bc6c3e77afde96cd480467323321e4", "sha256": "1844757aae7dc9dc80f2ea0a4e5327de055d98a033ae372f2064981df8099b34" }, "downloads": -1, "filename": "narmock-0.1.2.tar.gz", "has_sig": false, "md5_digest": "a7bc6c3e77afde96cd480467323321e4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 9168, "upload_time": "2019-07-20T16:52:25", "url": "https://files.pythonhosted.org/packages/b1/d7/e6f5dec7fb7ce8558ab9b28a1ce8596bb4b43083963ad17da289538770e5/narmock-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "025feab580d90c5df25fd5327c07c6a0", "sha256": "864a01fcb066f2b3b3092caedb30fdc16b028fb1bcea1cd3926d315b30de57d5" }, "downloads": -1, "filename": "narmock-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "025feab580d90c5df25fd5327c07c6a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 10579, "upload_time": "2019-07-20T16:54:39", "url": "https://files.pythonhosted.org/packages/d8/05/cff506222e16de5622996ac7114c1effd4218aeb3c355266c4d5f073dbdd/narmock-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "de2b29eea2ec9319b3f0e192c3b6d056", "sha256": "76de8a0993a4b3741074aec4887755f47bb9ab9f25e7c54512a0dc38760a3efe" }, "downloads": -1, "filename": "narmock-0.1.3.tar.gz", "has_sig": false, "md5_digest": "de2b29eea2ec9319b3f0e192c3b6d056", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 9225, "upload_time": "2019-07-20T16:54:40", "url": "https://files.pythonhosted.org/packages/2f/31/8b6ecfb736c4c3446477acbf5df7b850eb2fbba498c017879dfb32ca7e39/narmock-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "230fd51fe774ed222f140807be853021", "sha256": "57aa174ba800b6bbcc3c176fcc277466ee22d3cde1d886a6ce2695f4f8a26488" }, "downloads": -1, "filename": "narmock-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "230fd51fe774ed222f140807be853021", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 10852, "upload_time": "2019-07-20T17:26:30", "url": "https://files.pythonhosted.org/packages/cc/ff/7f6ee84c41c604b47a4f546ddac93008bdf99dcd45df5f343eff7913cd8e/narmock-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a09f43328c0597f8ccfee7b07003e5aa", "sha256": "48bf71e3969fe8e00b0897623e5d34f93f803cc52acc49722b19f61dfe8a4547" }, "downloads": -1, "filename": "narmock-0.1.4.tar.gz", "has_sig": false, "md5_digest": "a09f43328c0597f8ccfee7b07003e5aa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 9747, "upload_time": "2019-07-20T17:26:32", "url": "https://files.pythonhosted.org/packages/ea/38/d6235a5eea768f99e92f2fe4a6c6c8c470c8d3cf687e557f108ea40e23cb/narmock-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "36cca53f4769e8020759c5d15dbe08e2", "sha256": "6b7e7dbf91d96ea0b49dcc2613351b5f3a5bc8023698bf27ce4761d933b119fd" }, "downloads": -1, "filename": "narmock-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "36cca53f4769e8020759c5d15dbe08e2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 10852, "upload_time": "2019-07-20T17:29:15", "url": "https://files.pythonhosted.org/packages/02/f2/457224d3d3d243de7489591cd2fb741b26cdf901d9c8690c3174eddb3cea/narmock-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "707553384078e0823a3e1a8e09c80ea6", "sha256": "da9805c57b6e916b98320bd73b6f5d540e57472ace1331a53ef2486f234501b2" }, "downloads": -1, "filename": "narmock-0.1.5.tar.gz", "has_sig": false, "md5_digest": "707553384078e0823a3e1a8e09c80ea6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 9755, "upload_time": "2019-07-20T17:29:17", "url": "https://files.pythonhosted.org/packages/51/4b/c0f30fac9641670929df0fcc91042801c88b800d153d53789eefa357b7ad/narmock-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "520ac5b92f38ffb96b3a771b6d90bfd4", "sha256": "fa1f74068a68c4b9235ffb072e0914f1f1f93976ccf2f0ae395e793e0e164e51" }, "downloads": -1, "filename": "narmock-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "520ac5b92f38ffb96b3a771b6d90bfd4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 10955, "upload_time": "2019-07-21T14:13:23", "url": "https://files.pythonhosted.org/packages/59/3b/f78d866d985eb7ffade6e5d361d44f90a17d1409bf3b305131ead06b9b26/narmock-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ec6fd6e08c88308be0ba080e2758e70", "sha256": "c04d953d7fec2e15cb6c22b987d48cf1b423e13235ab97ceb14c65a244f0f695" }, "downloads": -1, "filename": "narmock-0.1.6.tar.gz", "has_sig": false, "md5_digest": "8ec6fd6e08c88308be0ba080e2758e70", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 9893, "upload_time": "2019-07-21T14:13:25", "url": "https://files.pythonhosted.org/packages/6e/e8/8b80c92c804ec50b033f8c66bb4eb303721ef195ad1ec526408dcb8b7f51/narmock-0.1.6.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "5d80ebae0a15f90f8b1a28de42cf5784", "sha256": "d3a0799d3dbf36b2b5e1f46913ff9a73984f124e44885cea825bc2cef6587c40" }, "downloads": -1, "filename": "narmock-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5d80ebae0a15f90f8b1a28de42cf5784", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 25458, "upload_time": "2019-08-30T18:31:00", "url": "https://files.pythonhosted.org/packages/a4/f6/bb6eb3439d22ebf2cc7253ab5effbdb836f21adc62844103c9cb461d497d/narmock-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f1017aa46923a9afacce0301a2c698e3", "sha256": "5b26a26acfc802314f1776e66d63ba465414839df40f0372a958ff0b1f3b1ac8" }, "downloads": -1, "filename": "narmock-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f1017aa46923a9afacce0301a2c698e3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 10564, "upload_time": "2019-08-30T18:31:02", "url": "https://files.pythonhosted.org/packages/d1/8d/218afbdee344bf695e7d34739522b42180c840214e22a0dfcf532181ea9f/narmock-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "19dc393a1afa5535838af645252e8fff", "sha256": "ba1a7c24f172fd72e45f66e47dfe8b74f5f1ca331739b17acb5980a08b0ed46f" }, "downloads": -1, "filename": "narmock-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "19dc393a1afa5535838af645252e8fff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 11643, "upload_time": "2019-09-01T16:45:42", "url": "https://files.pythonhosted.org/packages/df/96/c5e3a521d5498d039c6f2ab9b9a791642bd5bd03c470712fcec3a5853b8d/narmock-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3686b3e1240eadf32ea19ff6ffad8d06", "sha256": "b3783abb53048a6a0e3de1d0dae6a7d08fe8aad86f5da00de3c01ee4b2ee1300" }, "downloads": -1, "filename": "narmock-0.2.1.tar.gz", "has_sig": false, "md5_digest": "3686b3e1240eadf32ea19ff6ffad8d06", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 11237, "upload_time": "2019-09-01T16:45:43", "url": "https://files.pythonhosted.org/packages/3c/37/ac3c0deb4cea175cf63c245ecd95b3a8ecff51a4deafc93c7ff47906731f/narmock-0.2.1.tar.gz" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "961b5b907bace3f98ebb65b2cdc185bb", "sha256": "ea25049f0e577d29aad2326e26908e68e0956a752f3b43c94a827fd9f0e0f4a2" }, "downloads": -1, "filename": "narmock-0.2.10-py3-none-any.whl", "has_sig": false, "md5_digest": "961b5b907bace3f98ebb65b2cdc185bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 12495, "upload_time": "2019-10-13T16:43:14", "url": "https://files.pythonhosted.org/packages/00/6d/fb890afbf991713fc5e685f592b2716b8a290653c6c39b87dbd452903f1d/narmock-0.2.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "98267e6ecd064cdb783beab36633f48e", "sha256": "cf6aa6f176c144192564bf65d3d24e85f0755b2065a27ba3d5b58152b30c8188" }, "downloads": -1, "filename": "narmock-0.2.10.tar.gz", "has_sig": false, "md5_digest": "98267e6ecd064cdb783beab36633f48e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 12459, "upload_time": "2019-10-13T16:43:16", "url": "https://files.pythonhosted.org/packages/93/8f/6b14317897b68fa0e720c06357193dff1742734a1db90d081ec0b32c3b39/narmock-0.2.10.tar.gz" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "198f9cfaa6e1f432888c471f2b7bccd1", "sha256": "4816c13a5fbfc802d24e76c59869b4953b0f0807f20651880fd8c89d49491e32" }, "downloads": -1, "filename": "narmock-0.2.11-py3-none-any.whl", "has_sig": false, "md5_digest": "198f9cfaa6e1f432888c471f2b7bccd1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 12775, "upload_time": "2019-10-14T14:03:51", "url": "https://files.pythonhosted.org/packages/c3/48/80a9c8477ecdb569e790caa14259ea08c90a3e23751bc62b11dacf6a6091/narmock-0.2.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fcbbff27b3496c3bade4edc859de07d4", "sha256": "6e6896f132f6c82e8ca65875bd3b60b742cd22e3035277fb86b8e2d06d1360ac" }, "downloads": -1, "filename": "narmock-0.2.11.tar.gz", "has_sig": false, "md5_digest": "fcbbff27b3496c3bade4edc859de07d4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 12953, "upload_time": "2019-10-14T14:03:52", "url": "https://files.pythonhosted.org/packages/c8/55/3d32781835a812d631101ab9b0a365f8bd7d0097792d952c2491c3718772/narmock-0.2.11.tar.gz" } ], "0.2.12": [ { "comment_text": "", "digests": { "md5": "8788aa68104afbd45e75d592a23f6a59", "sha256": "f1affb471dcd651a49aa98453ff4a5d709b153a52ae0781e871f235ec1c35b24" }, "downloads": -1, "filename": "narmock-0.2.12-py3-none-any.whl", "has_sig": false, "md5_digest": "8788aa68104afbd45e75d592a23f6a59", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 12780, "upload_time": "2019-10-17T13:34:56", "url": "https://files.pythonhosted.org/packages/2d/36/5e944dad21743dd2a226e837c9aaa5c38b1e0b1250961c8752d365133bc3/narmock-0.2.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7ba740e0b0936370d955df08f2126799", "sha256": "bbb4349015b4b2ed424931f021841608add6acdbbb191c96462dd29c3dec140f" }, "downloads": -1, "filename": "narmock-0.2.12.tar.gz", "has_sig": false, "md5_digest": "7ba740e0b0936370d955df08f2126799", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 12956, "upload_time": "2019-10-17T13:34:57", "url": "https://files.pythonhosted.org/packages/4d/d9/630a4c3aa3e035010659f38d053dfa8a74c2e9dc4d679427d035ab9241f6/narmock-0.2.12.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "e18f7ea8393d408f3dcd58d87a7bbc5d", "sha256": "8ecd73286e35a3647dc68bb48f8a2c6216ea5de73ff00fdd9d0e202359341377" }, "downloads": -1, "filename": "narmock-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e18f7ea8393d408f3dcd58d87a7bbc5d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 11869, "upload_time": "2019-09-02T00:02:57", "url": "https://files.pythonhosted.org/packages/ba/fc/d26167d8aefd59adaf6121c597e689162a909f30be1cdfc26cb6fa77609b/narmock-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "66bac4b8dbe229f019f19269d9fe711b", "sha256": "5de4e6739560bc66a54c8a3cb4f0dd6070e7977c32473219ec3ca369a2424283" }, "downloads": -1, "filename": "narmock-0.2.2.tar.gz", "has_sig": false, "md5_digest": "66bac4b8dbe229f019f19269d9fe711b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 11614, "upload_time": "2019-09-02T00:02:59", "url": "https://files.pythonhosted.org/packages/a2/6e/c9a310bb672fb697d08040542d544487cc3ada1d115308fae8e2c6dc8e47/narmock-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "4036ed0f2e37edcbe25126d8d39aa54b", "sha256": "5f28189e3eee1f562fa22be68483a002352fb9cc95452af9612847ec03e3f48a" }, "downloads": -1, "filename": "narmock-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "4036ed0f2e37edcbe25126d8d39aa54b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 11877, "upload_time": "2019-09-02T00:13:28", "url": "https://files.pythonhosted.org/packages/47/90/56045597be04913c3f4945242a2b3d2a936aa285a614998a90100acbb87e/narmock-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ef1db717bd79373296be0d8ed85793b", "sha256": "c4eb67564d4e257033b0c6ccc72bd45196c5e3ba8064dac61b4cfe40f2ea8d7c" }, "downloads": -1, "filename": "narmock-0.2.3.tar.gz", "has_sig": false, "md5_digest": "0ef1db717bd79373296be0d8ed85793b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 11623, "upload_time": "2019-09-02T00:13:30", "url": "https://files.pythonhosted.org/packages/53/cf/f44ac8f7cf5a08ef1c5674331dc3d1b4f6eb99fba6d1c537480cef24bb30/narmock-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "8120585585ef12caeb87de49a6c01639", "sha256": "83fef1861a4bfa50d1571cd76bff3aacef93f93d85732683cb903557ceb1b250" }, "downloads": -1, "filename": "narmock-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "8120585585ef12caeb87de49a6c01639", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 11886, "upload_time": "2019-09-02T13:26:15", "url": "https://files.pythonhosted.org/packages/47/97/313370b975483b8d74c2213089ce0567e504bda09a2aa7c386d0833cfad4/narmock-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "811fe78abaaaf6aa733c4f2b6b021ec5", "sha256": "d324a21629866d11904b624da49008103a7d171eaf8560977b146ac406876c09" }, "downloads": -1, "filename": "narmock-0.2.4.tar.gz", "has_sig": false, "md5_digest": "811fe78abaaaf6aa733c4f2b6b021ec5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 11622, "upload_time": "2019-09-02T13:26:17", "url": "https://files.pythonhosted.org/packages/ca/8c/49df2193e0bd81151c501e3fbff05ecf92aaa9226d64c2b65afa8cfc96d7/narmock-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "a6ca633517a1d19ffb21eabddd6dd418", "sha256": "e52396e61a11cfa19131dc0e963e63f97bd548e51e6744ec1ccec368298e4200" }, "downloads": -1, "filename": "narmock-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "a6ca633517a1d19ffb21eabddd6dd418", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 12034, "upload_time": "2019-10-13T00:11:48", "url": "https://files.pythonhosted.org/packages/1b/e9/ed9fe4dbe0aa81d77887e55d3cb7792cd9d4280d141472b46e1fb413db78/narmock-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f039d009946ea5dcfbf53f5853e60819", "sha256": "984b6da0d3d333f447ebc05a9a307bb5ff8c51cdc6b9000e002f7856be436a77" }, "downloads": -1, "filename": "narmock-0.2.5.tar.gz", "has_sig": false, "md5_digest": "f039d009946ea5dcfbf53f5853e60819", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 11811, "upload_time": "2019-10-13T00:11:50", "url": "https://files.pythonhosted.org/packages/09/19/354999157099abaed133d6ace6304f51f278427af14921fb9128a7552f30/narmock-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "0522e7eabe9b8b38604b66b418b82827", "sha256": "09569236d9f47d3065db2cfc7fadba8d741fffec849ce479e36061a1a2ceab6e" }, "downloads": -1, "filename": "narmock-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "0522e7eabe9b8b38604b66b418b82827", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 12025, "upload_time": "2019-10-13T11:09:04", "url": "https://files.pythonhosted.org/packages/1b/17/c2db43080739fdfb41a7698f6071178935c636bb3f5803f9bfed39fff9a1/narmock-0.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23e7e5a565b95a77b47edbec6589aece", "sha256": "22d6454606ea2ee5366900a278ac06a31e9c53dc107f86df31f5822cfa43a40f" }, "downloads": -1, "filename": "narmock-0.2.6.tar.gz", "has_sig": false, "md5_digest": "23e7e5a565b95a77b47edbec6589aece", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 11799, "upload_time": "2019-10-13T11:09:06", "url": "https://files.pythonhosted.org/packages/f1/6a/b395c9254c9b3f1f78842086661b84c496778f99bece380e8b32cc5e6628/narmock-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "dc4edae5ae54a679a43c6ba2561c3828", "sha256": "8dd474b6a493f7c241a60bce337bceeb9baa9a36bb6dbd5d71087445404c505c" }, "downloads": -1, "filename": "narmock-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "dc4edae5ae54a679a43c6ba2561c3828", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 12134, "upload_time": "2019-10-13T13:42:55", "url": "https://files.pythonhosted.org/packages/5e/c8/0192f7397622b9c280bf54057ce94b80b0c6a4262e67556d240a75dcadfb/narmock-0.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cbcee6e34f34da3e8bd1fde83574c5d6", "sha256": "8ceffe53cbcc84b07c217d1e78bc8b011321079f64a3b1d935bf07162b20ac52" }, "downloads": -1, "filename": "narmock-0.2.7.tar.gz", "has_sig": false, "md5_digest": "cbcee6e34f34da3e8bd1fde83574c5d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 11932, "upload_time": "2019-10-13T13:42:57", "url": "https://files.pythonhosted.org/packages/fe/5a/685ec271a511db2a34d463b816c53fd231c6d51ee60a422ef5120e65caac/narmock-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "49860850fe64a10566fef97d1ed21e37", "sha256": "218994ea9abc9e4d4b45166571e8c207e44243a2cd093ed57909632d0134f66b" }, "downloads": -1, "filename": "narmock-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "49860850fe64a10566fef97d1ed21e37", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 12150, "upload_time": "2019-10-13T13:50:41", "url": "https://files.pythonhosted.org/packages/ff/42/ad60472c09becbb2bdf54324f812571903ed8be5967436b6f09d0b2dd4c0/narmock-0.2.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "91b03665e33f6aa15ca6de95015ae263", "sha256": "0e41680f232b31de7a72db6526051e3ce9c3d53b1a0d0d7bc689882b72f311b5" }, "downloads": -1, "filename": "narmock-0.2.8.tar.gz", "has_sig": false, "md5_digest": "91b03665e33f6aa15ca6de95015ae263", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 11949, "upload_time": "2019-10-13T13:50:43", "url": "https://files.pythonhosted.org/packages/08/be/0a966b41e60788cfe97861340a85eb692f511074bb7f170f860f3362e566/narmock-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "1487a066ea6d6d5884abebc92a5c4985", "sha256": "cea84e178abafa03f86ddaccd84ad7d5f2763759cffc5970b64a75c3b60960be" }, "downloads": -1, "filename": "narmock-0.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "1487a066ea6d6d5884abebc92a5c4985", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 12158, "upload_time": "2019-10-13T14:05:43", "url": "https://files.pythonhosted.org/packages/aa/ae/8e45b5241c3c8162b011e64f037b2876423ec6e5f5c935123b7e1b5ba2e3/narmock-0.2.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7b720fc30bf746389061e9d61f6bf688", "sha256": "8620bfe8b350a35209e86806bc2e7c4fc24845bc69214d36debd111d87696f16" }, "downloads": -1, "filename": "narmock-0.2.9.tar.gz", "has_sig": false, "md5_digest": "7b720fc30bf746389061e9d61f6bf688", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 11958, "upload_time": "2019-10-13T14:05:45", "url": "https://files.pythonhosted.org/packages/e0/9a/f346f0b366edc795ca3a515e82879f9d40167c9eb7b0e2527472c17debe3/narmock-0.2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8788aa68104afbd45e75d592a23f6a59", "sha256": "f1affb471dcd651a49aa98453ff4a5d709b153a52ae0781e871f235ec1c35b24" }, "downloads": -1, "filename": "narmock-0.2.12-py3-none-any.whl", "has_sig": false, "md5_digest": "8788aa68104afbd45e75d592a23f6a59", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 12780, "upload_time": "2019-10-17T13:34:56", "url": "https://files.pythonhosted.org/packages/2d/36/5e944dad21743dd2a226e837c9aaa5c38b1e0b1250961c8752d365133bc3/narmock-0.2.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7ba740e0b0936370d955df08f2126799", "sha256": "bbb4349015b4b2ed424931f021841608add6acdbbb191c96462dd29c3dec140f" }, "downloads": -1, "filename": "narmock-0.2.12.tar.gz", "has_sig": false, "md5_digest": "7ba740e0b0936370d955df08f2126799", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 12956, "upload_time": "2019-10-17T13:34:57", "url": "https://files.pythonhosted.org/packages/4d/d9/630a4c3aa3e035010659f38d053dfa8a74c2e9dc4d679427d035ab9241f6/narmock-0.2.12.tar.gz" } ] }