{ "info": { "author": "Aviv Cohn", "author_email": "avivcohn1@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7" ], "description": "# Monki\n\nPatch functions at runtime, the easy way.\n\n## Installation\n\n pip install monki\n\n## Basic usage\n\nWe want to patch the following function:\n\n def func():\n print('First') # line 0\n print('Second') # line 1\n print('Third') # line 2\n\nDifferent ways to patch it:\n\n import monki\n\n # Add code at beginning or end\n\n monki.patch(func, start=\"print('Starting')\", end=\"print('Ending')\")\n func()\n >>> 'Starting'\n >>> 'First'\n >>> 'Second'\n >>> 'Third'\n >>> 'Ending'\n\n # Insert lines at any offset\n\n monki.patch(func, insert_lines={1: \"print('Injected line')\", 2: \"print('Another injection')\"})\n func()\n >>> 'First'\n >>> 'Injected line'\n >>> 'Second'\n >>> 'Another injection'\n >>> 'Third'\n\n # Let's patch a loop inside the function!\n # To do so we need to insert the loop and indent a line to go inside it.\n\n monki.patch(func, insert_lines={1: \"for i in range(3):\"}, indent_lines=[1])\n func()\n >>> 'First'\n >>> 'Second'\n >>> 'Second'\n >>> 'Second'\n >>> 'Third'\n\n## Limitations\n\n* Currently you cannot patch the same function twice\n* Some edge cases will not work with closure functions\n* Will probably only work on CPython 3+. Currently only tested on CPython 3.7\n\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/avivc/monki", "keywords": "monkey patching utility programming development", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "monki", "package_url": "https://pypi.org/project/monki/", "platform": "", "project_url": "https://pypi.org/project/monki/", "project_urls": { "Homepage": "https://github.com/avivc/monki" }, "release_url": "https://pypi.org/project/monki/0.1.1/", "requires_dist": null, "requires_python": "", "summary": "Patch functions at runtime, the easy way.", "version": "0.1.1" }, "last_serial": 4829268, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "ad762bf12b0888ddb43e02a5ea2fe35c", "sha256": "4229925f48430a7a7381bc2e64a3f3a9fdd97df624873568b824c6e495fe1cb5" }, "downloads": -1, "filename": "monki-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ad762bf12b0888ddb43e02a5ea2fe35c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6500, "upload_time": "2019-02-16T03:56:12", "url": "https://files.pythonhosted.org/packages/a8/52/f428ac8fbbfb831d09da09b3ebf325b573a56c11e9711dde4a8ff5b4d955/monki-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "47d47730eaa34f657b13a8917a82263d", "sha256": "2087ab6a601ff9ff169765556a3570faf56bff4c1e1ab894a21ba2bc6b2d68c9" }, "downloads": -1, "filename": "monki-0.1.0.tar.gz", "has_sig": false, "md5_digest": "47d47730eaa34f657b13a8917a82263d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5013, "upload_time": "2019-02-16T03:56:14", "url": "https://files.pythonhosted.org/packages/95/be/30bcba21318c5b7b9aaf78b9cbc987457214ae7237aee18ad7f57bdd16c0/monki-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d4c75c626164d7ce26d52d5b04dfdcb9", "sha256": "f5164cf9010e4ac21c8cde8531289924714a95ff5829638c09710a4aec3d7559" }, "downloads": -1, "filename": "monki-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d4c75c626164d7ce26d52d5b04dfdcb9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6587, "upload_time": "2019-02-16T17:16:18", "url": "https://files.pythonhosted.org/packages/74/b6/e3f65ad757510f4694ea1e24c5b33a57276c00f3d3dbc40df6a9f3e0c7aa/monki-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "248be36219d832e0dd76c0fe306c98ab", "sha256": "8f9231a3fbe40000ebba556417f2e48ea0279ae34b99731560ac5ac6bc1aeb25" }, "downloads": -1, "filename": "monki-0.1.1.tar.gz", "has_sig": false, "md5_digest": "248be36219d832e0dd76c0fe306c98ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5258, "upload_time": "2019-02-16T17:16:20", "url": "https://files.pythonhosted.org/packages/cc/3b/f02606ceace20508be2405bd059bdb58bead2a4537c3bc859dae3eed0445/monki-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d4c75c626164d7ce26d52d5b04dfdcb9", "sha256": "f5164cf9010e4ac21c8cde8531289924714a95ff5829638c09710a4aec3d7559" }, "downloads": -1, "filename": "monki-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d4c75c626164d7ce26d52d5b04dfdcb9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6587, "upload_time": "2019-02-16T17:16:18", "url": "https://files.pythonhosted.org/packages/74/b6/e3f65ad757510f4694ea1e24c5b33a57276c00f3d3dbc40df6a9f3e0c7aa/monki-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "248be36219d832e0dd76c0fe306c98ab", "sha256": "8f9231a3fbe40000ebba556417f2e48ea0279ae34b99731560ac5ac6bc1aeb25" }, "downloads": -1, "filename": "monki-0.1.1.tar.gz", "has_sig": false, "md5_digest": "248be36219d832e0dd76c0fe306c98ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5258, "upload_time": "2019-02-16T17:16:20", "url": "https://files.pythonhosted.org/packages/cc/3b/f02606ceace20508be2405bd059bdb58bead2a4537c3bc859dae3eed0445/monki-0.1.1.tar.gz" } ] }