Metadata-Version: 2.1
Name: monki
Version: 0.1.1
Summary: Patch functions at runtime, the easy way.
Home-page: https://github.com/avivc/monki
Author: Aviv Cohn
Author-email: avivcohn1@gmail.com
License: MIT
Description: # Monki
        
        Patch functions at runtime, the easy way.
        
        ## Installation
        
            pip install monki
        
        ## Basic usage
        
        We want to patch the following function:
        
            def func():
                print('First')   # line 0
                print('Second')  # line 1
                print('Third')   # line 2
        
        Different ways to patch it:
        
            import monki
        
            # Add code at beginning or end
            
            monki.patch(func, start="print('Starting')", end="print('Ending')")
            func()
                >>> 'Starting'
                >>> 'First'
                >>> 'Second'
                >>> 'Third'
                >>> 'Ending'
        
            # Insert lines at any offset
            
            monki.patch(func, insert_lines={1: "print('Injected line')", 2: "print('Another injection')"})
            func()
                >>> 'First'
                >>> 'Injected line'
                >>> 'Second'
                >>> 'Another injection'
                >>> 'Third'
        
            # Let's patch a loop inside the function!
            # To do so we need to insert the loop and indent a line to go inside it.
            
            monki.patch(func, insert_lines={1: "for i in range(3):"}, indent_lines=[1])
            func()
                >>> 'First'
                >>> 'Second'
                >>> 'Second'
                >>> 'Second'
                >>> 'Third'
        
        ## Limitations
        
        * Currently you cannot patch the same function twice
        * Some edge cases will not work with closure functions
        * Will probably only work on CPython 3+. Currently only tested on CPython 3.7
Keywords: monkey patching utility programming development
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
