Metadata-Version: 2.0
Name: mara
Version: 0.6.2
Summary: A framework for network services, talkers and MUDs
Home-page: http://richardterry.co.uk/projects/mara/
Author: Richard Terry
Author-email: code@radiac.net
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 :: Internet
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Requires-Dist: six
Provides-Extra: dev
Requires-Dist: nose; extra == 'dev'
Provides-Extra: full
Requires-Dist: python-dateutil; extra == 'full'
Requires-Dist: pyyaml; extra == 'full'
Requires-Dist: bcrypt; extra == 'full'

=======================================
Mara - Python network service framework
=======================================

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

.. image:: https://travis-ci.org/radiac/mara.svg?branch=master
    :target: https://travis-ci.org/radiac/mara

.. image:: https://coveralls.io/repos/radiac/mara/badge.svg?branch=master&service=github
    :target: https://coveralls.io/github/radiac/mara?branch=master


Features
========

* Event-based framework with support for timers
* Supports raw sockets or telnet with negotiation
* Supports seamless restarts while maintaining connections and state
* Common extras included, such as:

  * command manager
  * storage system
  * natural language processing tools
  * accounts, login helpers and rooms

Version 0.6.2. Supports Python 2.7 and 3.2 to 3.5.

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


Quickstart
==========

Install Mara with ``pip install mara``, then write your service using
`event handlers <http://radiac.net/projects/mara/documentation/api/events/>`_.

A minimal Mara service looks something like this::

    from mara import Service, events
    service = Service()

    @service.listen(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

Override settings `in code <http://radiac.net/projects/mara/documentation/introduction/#settings>`_,
or by passing arguments on the command line::

    python echo.py --host=10.0.0.11 --port=8000
    * Server listening on 10.0.0.11:8000

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.


