Skip to content

reartnew/class-interference

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

class-interference

Monkey patching utilities for classes.

Installation

pip install class-interference

Usage example

from class_interference import Extension, inject, apply_extensions


class LibraryClass:
    def library_method(self, *args, **kwargs):
        return None


class LibraryClassExtension(LibraryClass, Extension):
    @inject
    def library_method(self, *args, **kwargs):
        original_value = self.super_ext.library_method(*args, **kwargs)
        if original_value is None:
            raise ValueError
        return original_value


apply_extensions(LibraryClassExtension)

if __name__ == "__main__":
    library_class_instance = LibraryClass()
    library_class_instance.library_method()  # raises ValueError