<commit_before>h1. MNML WSGI Web Framework

A small python glue framework for building web applications and services that 
run atop WSGI compliant servers. The emphasis is on HTTP best practices, 
readable code and allowing applications to be built using whatever
other python modules you like.

MNML's core philosophy is that we really love writing Python and want to do that for most things, but I also want a certain level of "plumbing" taken care of. In addition, MNML:

* Is strictly WSGI;
* Provides URL mapping to HTTP response relationship, aka routing;
* Provides methods for all HTTP method verbs (PUT and DELETE are supported);
* Provides the ability to add middleware functions so one can alter the request or response as required;
* Does not dictate the template or ORM layer you should use - MNML is strictly about URL routing and serving, and tools needed to do so; and mostly
* Lets the implementer write Python, not a sub-set of Python.

h2. MNML is

* Small - the framework is around 400 lines of code, and a lot of those are comments.
* Fast - 
* WSGI - so you can make use of a range of available WSGI middleware.
* Tested - at least a bit. The module includes a test runner and a growing suite of tests.

h2. Hello World

<pre>from mnml import RegexBasedApplication, RequestHandler, HttpResponse, development_server

class HelloWorld(RequestHandler):
    def GET(self):
        return HttpResponse("<h1>Hello World</h1>")<commit_msg>Change to readme<commit_after>h1. MNML WSGI Web Framework

A small python glue framework for building web applications and services that 
run atop WSGI compliant servers. The emphasis is on HTTP best practices, 
readable code and allowing applications to be built using whatever
other python modules you like.

MNML's core philosophy is that we really love writing Python and want to do that for most things, but I also want a certain level of "plumbing" taken care of. In addition, MNML:

* Is strictly WSGI;
* Provides URL mapping to HTTP response relationship, aka routing;
* Provides methods for all HTTP method verbs (PUT and DELETE are supported);
* Provides the ability to add middleware functions so one can alter the request or response as required;
* Does not dictate the template or ORM layer you should use - MNML is strictly about URL routing and serving, and tools needed to do so; and mostly
* Lets the implementer write Python, not a sub-set of Python.

h2. Hello World

<pre>from mnml import RegexBasedApplication, RequestHandler, HttpResponse, development_server

class HelloWorld(RequestHandler):
    def GET(self):
        return HttpResponse("<h1>Hello World</h1>")
{'fraction_non_alphanumeric': 0.04621212121212121, 'fraction_numerical': 0.004545454545454545, 'mean_word_length': 4.422997946611909, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, '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': '3546459', 'n_tokens_mistral': 700, 'n_tokens_neox': 659, 'n_words': 395}