<commit_before>.. image:: https://travis-ci.org/danbradham/shout.svg?branch=master
  :target: https://travis-ci.org/danbradham/shout

.. image:: https://coveralls.io/repos/danbradham/shout/badge.png?branch=master
  :target: https://coveralls.io/r/danbradham/shout?branch=master
========
 Shout!
========
**Loud Python messaging.**

Shout is a single module providing simple messaging vocabulary for small applications. Shout is NOT a distributed messaging framework.

::

    from shout import Message, hears, shout

    class WhoAreYou(Message):
        pass

    @hears(WhoAreYou)
    def lucky_day():
        return "We are..."

    @hears(WhoAreYou)
    def dusty_bottoms():
        return "The threeee..."

    @hears(WhoAreYou)
    def ned_nederlander():
        return "Amigos!!"

    msg = shout(WhoAreYou)
    print("".join(msg.results))

    # We are...The threeee...Amigos!!


Why Shout<commit_msg>setup.py pypi name is pyshout [skip ci]<commit_after>.. image:: https://travis-ci.org/danbradham/shout.svg?branch=master
  :target: https://travis-ci.org/danbradham/shout

.. image:: https://coveralls.io/repos/danbradham/shout/badge.png?branch=master
  :target: https://coveralls.io/r/danbradham/shout?branch=master
========
 Shout!
========
**Loud Python messaging.**

Shout is a single module providing simple messaging vocabulary for small applications. Shout is NOT a distributed messaging framework.

.. code-block:: python

    from shout import Message, hears, shout

    class WhoAreYou(Message):
        pass

    @hears(WhoAreYou)
    def lucky_day():
        return "We are..."

    @hears(WhoAreYou)
    def dusty_bottoms():
        return "The threeee..."

    @hears(WhoAreYou)
    def ned_nederlander():
        return "Amigos!!"

    msg = shout(WhoAreYou)
    print("".join(msg.results))

    # We are...The threeee...Amigos!!


Why Shout
{'fraction_non_alphanumeric': 0.148068669527897, 'fraction_numerical': 0.0, 'mean_word_length': 3.267734553775744, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 8, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5338459', 'n_tokens_mistral': 633, 'n_tokens_neox': 604, 'n_words': 139}