Metadata-Version: 1.1
Name: domain-events
Version: 1.0.1
Summary: A lightweight library with an implementation of Pub-Sub.
Home-page: https://github.com/agroptima/domain-events
Author: Agroptima S.L.
Author-email: developers@agroptima.com
License: GPLv3
Download-URL: https://github.com/agroptima/domain-events/releases
Description: # Domain Events
        A lightweight library with an implementation of Pub-Sub.
        
        ## Install
        
        ```
        $ pipenv install domain-events
        ```
        
        or
        
        ```
        $ pip install domain-events
        ```
        
        ## Usage
        
        
        In order to have the pub-sub working in your application, you'll need to write your own subscribers and to subscribe them to the publisher.
        
        `domain-events` provides an interface for subscribers that needs to be implemented by your own subscribers in the first place. Two methods are mandatory: `handle(self, event)` and `_events_subscribed_to(self)`. Following is an example of how to do it.
        
        ```python
        
        from domain_events import Subscriber
        
        
        class ExampleSubscriber(Subscriber):
        
            def handle(self, event):
              #  Logic to handle the occurring event
        
            def _events_subscribed_to(self):
              """ Return the tuple of events it is subscribed to. """
        
              return (AnEvent, AnotherEvent)
        ```
        
        Once the subscriber is implemented, you'll need to subscribe it to the event publisher.
        
        ```python
        
        from domain_events import Publisher
        
        Publisher().subscribe(ExampleSubscriber())
        ```
        
        Now, in order to publish an event, just call the `publish` method on the `Publisher` with one of your domain events.
        
        ```python
        from domain_events import Event, Publisher
        
        
        class AnEvent(Event):
            pass
        
        Publisher().publish(AnEvent())
        ```
        
        The event will be passed on to the proper subscribers.
        
Keywords: python,ddd
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Utilities
