Metadata-Version: 2.0
Name: mara
Version: 0.4.0
Summary: A framework for network services, talkers and MUDs
Home-page: http://richardterry.co.uk/projects/mara/
Author: Richard Terry
Author-email: python@richardterry.co.uk
License: BSD
Keywords: socket telnet
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Internet
Classifier: Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Provides-Extra: dev
Requires-Dist: nose; extra == 'dev'
Provides-Extra: full
Requires-Dist: bcrypt; extra == 'full'
Requires-Dist: python-dateutil; extra == 'full'

=========================================================
Mara - A framework for network services, talkers and MUDs
=========================================================

An event-based python framework designed for building TCP/IP services, such as
echo servers, flash policy servers, chatrooms, talkers and MUDs. Batteries
included.

* Project site: http://radiac.net/projects/mara/
* Source code: https://github.com/radiac/mara

See the `Documentation <http://radiac.net/projects/mara/documentation/>`_
for details of how Mara works.


Features
========

* Event-based framework with support for timers
* Supports raw sockets or telnet with negotiation
* Supports seamless restarts while maintaining connections
* Common extras included, such as:
  * command manager
  * storage system
  * accounts and login helpers
  * natural language processing tools

Version 0.4.0; supports Python 2.7.


Quickstart
==========

Install Mara with ``pip install mara``, then write your service using
event handlers.

A minimal Mara service looks something like this::

    from mara import Service
    service = Service()

    @service.listen(mara.events.Receive)
    def receive(event):
        event.client.write(event.data)

    if __name__ == '__main__':
        service.run()

Save it as ``echo.py`` and run it:

    python echo.py
    * Server listening on 127.0.0.1:9000

Take a look at the
`examples <https://github.com/radiac/mara/tree/master/examples>`_ to see how to
start writing more complex services, or read the
`documentation <http://radiac.net/projects/mara/documentation/>`_ for
details of how Mara works.


