Metadata-Version: 1.0
Name: roleplay
Version: 0.8
Summary: Python does Roles
Home-page: http://pypi.python.org/pypi/roleplay/
Author: Ask Solem
Author-email: askh@opera.com
License: UNKNOWN
Description: ========================================
        ``roleplay:`` Python does Roles
        ========================================
        :Version: 0.8
        
        Roleplay is an in-progress implementation of roles for Python. The current
        state is that it passes the Perl6-Roles_ test suite, which is not the final
        authority on Perl6 roles, but a Perl5 implementation.
        
        =======================================
        Synopsis
        =======================================
        
        Creating Roles
        ______________
        
        >>> from roleplay.role import Role
        
        >>> class LoadFrobulatorRole(Role):
        ...     '''
        ...         Simple role example.
        ...     '''
        ...
        ...     # Roles can use the '__requires__' attribute to define a set
        ...     # of attributes/methods the class using the role has to
        ...     # define (or else it would get an exception).
        ...
        ...     __requires__ = ["has_frobulator"]
        ...
        ...     def save_frobulator(self, data):
        ...
        ...         # Do something with data
        ...         # .....
        ...         print "saving frobulator..."
        ...
        ...
        
        >>> class SaveFrobulatorRole(Role):
        ...     '''
        ...         Another role example
        ...     '''
        ...
        ...
        ...     def load_frobulator(self, article_id):
        ...
        ...         # Do something with data
        ...         # .....
        ...         print "loading frobulator..."
        ...
        ...
        
        Using Roles
        ___________
        
        >>> from roleplay import has_role, does
        
        >>> class Article(object):
        ...     '''
        ...         This is our class using the roles.
        ...     '''
        ...
        ...     def __init__(self):
        ...         pass
        ...
        ...     def load_article(self, id):
        ...
        ...         if does(self, LoadFrobulatorRole):
        ...             self.load_frobulator(id)
        ...         # ... do other loading stuff ... #
        ...
        ...     def save_article(self, data):
        ...
        ...         if does(self, SaveFrobulatorRole):
        ...             self.save_frobulator(data)
        ...         # ... do other saving stuff ... #
        ...
        ...
        ...     # This is the requirement for RoleA.
        ...     def has_frobulator(self):
        ...         frobulator = config.lookup('frobulator')
        ...         return frobulator
        ...
        ...
        ... has_role(Article, LoadFrobulatorRole, SaveFrobulatorRole)
        ...
        ...
        ... article = Article()
        ...
        ... art = article.load_article(13)
        ... article.save_article(art)
        ...
        
        ======================================
        Installation
        ======================================
        
        To install:
        
        >>> python ./setup.py install
        
        
        Or via easy_install:
        
        >>> easy_install roleplay
        
        
        =======================================
        Acknowledgements
        =======================================
        
        Thanks to Rob Kinyon and Stevan Little for the Perl6-Roles_ test suite,
        hope you don't mind me porting it to python :)
        
        
        .. _Perl6-Roles: http://search.cpan.org/perldoc?Perl6::Role
        
        
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
