Skip to content

Commit

Permalink
Merge pull request #29 from yazman/iterable_entrypoints
Browse files Browse the repository at this point in the history
Add support for iterable consumer/producer entry-points
  • Loading branch information
lmacken committed Jun 30, 2015
2 parents cf0aba9 + 07aa16d commit eb9762c
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
6 changes: 6 additions & 0 deletions docs/main/Consumers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,12 @@ make it look something like this:
"""
.. note::

You can also install a collection of consumers in the same manner. Just
specify the name of an iterable object in place of the consumer class
name in the example above. This even works with generator objects.

After modifying your entry-points, you'll need to re-generate your project's `egg-info`.

.. code-block:: bash
Expand Down
6 changes: 6 additions & 0 deletions docs/main/Producers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,9 @@ in your `setup.py`, like so:
[moksha.producer]
hello = myproject.producers:HelloWorldProducer
.. note::

Just as with consumers, you can also expose a collection of producers by
creating a list, generator object, etc. inside of your code and providing
that variable as an entry-point under `[moksha.producer]`.
10 changes: 8 additions & 2 deletions moksha.hub/moksha/hub/hub.py
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,10 @@ def __init_consumers(self):
for consumer in pkg_resources.iter_entry_points('moksha.consumer'):
try:
c = consumer.load()
self._consumers.append(c)
try:
self._consumers.extend(c) # assume to be collection
except TypeError:
self._consumers.append(c)
except Exception as e:
log.exception("Failed to load %r consumer." % consumer.name)
else:
Expand Down Expand Up @@ -391,7 +394,10 @@ def __init_producers(self):
], []):
try:
p = producer.load()
self._producers.append(p)
try:
self._producers.extend(p) # assume to be collection
except TypeError:
self._producers.append(p)
except Exception as e:
log.exception("Failed to load %r producer." % producer.name)
else:
Expand Down

0 comments on commit eb9762c

Please sign in to comment.