Metadata-Version: 1.1
Name: Ext.Manager
Version: 0.1.0
Author: Niklas Rosenstein
Author-email: rosensteinniklas at gmail com
Description: ext_manager - Extension manager for classes using object composition
        ####################################################################
        
        Demonstrative code says more than thousand words ;)
        
            # some_module
            # -------------------------------
        
            from ext_manager import ExtensionManager, Extension
            class SomeClass(object):
                ext = ExtensionManager()
                def do_print(self, value):
                    print value
        
            # some_module.ext.some_extension
            # -------------------------------
        
            from ext_manager import ExtensionClassMeta, Extension
            class Extensions():
                __metaclass__ = ExtensionClassMeta
                managers = some_module.SomeClass.ext
        
                @Extension('method'):
                def do_extension(self):
                    if hasattr(self, 'value'):
                        self.do_print(self.value)
                    else:
                        self.do_print('Instance has not `value` attribute.')
        
            # Interactive Interpreter Example
            # -------------------------------
        
            >>> import some_module
            >>> import some_module.ext.some_extension
            >>> obj = some_module.SomeClass()
            >>> obj.ext.do_stuff()
            'Instance has not `value` attribute.'
            >>> class Subclass(some_module.SomeClass):
            ...     def __init__(self, value):
            ...         self.value = value
            >>> obj = Subclass('Subclass Value')
            >>> obj.ext.do_stuff()
            'Subclass Value'
        
        In a nutshell: You can easily extend a class from another module by using
        object composition instead of subclassing.
        
        .. author:: Niklas Rosenstein
        .. license:: GNU GPL
Keywords: extensions manager
Classifier: Development Status :: 5 - Production/Stable

