<commit_before>========
fiole.py
========

``fiole.py`` is a WSGI micro-framework with the following development
constraints:

* Single file, **no external dependency**
* Provide enough features to build a web application with minimal effort
* Embed **a compact template engine**
* Keep the module reasonably small


Main features:

* Routing
* Methods GET/HEAD/POST/PUT/DELETE
* Error handlers
* File uploads
* Static files
* Fast template engine
* Secure cookies


**Disclaimer:** this framework is intentionally limited.  If you need a robust
and scalable solution, look elsewhere.


Example
=======

::

  from fiole import get, run_fiole

  @get('/')
  def index(request):
      return 'Hello World!'

  run_fiole()

See ``examples/`` for more usages:

::

  python fiole.py examples


Thanks
======

Thank you to <NAME> (toastdriven) for `itty
<https://github.com/toastdriven/itty#readme>`_, the itty-bitty web framework
which helped me to kick-start the project.

Thank you to <NAME> (akorn) for his blazingly fast and elegant
template library `wheezy.template <http://pythonhosted.org/wheezy.template/>`_:
it is the inspiration for the template engine of ``fiole.py``.

The following projects were also a great source of ideas:

* `Werkzeug <http://werkzeug.pocoo.org/>`_ (``HTTPHeaders`` and
  ``EnvironHeaders`` datastructures)
* `Bottle <http://bottlepy.org/>`_ (embedding a simple template engine)
* `Jinja2 <http://jinja.pocoo.org/>`_ and `Mako
  <http://www.makotemplates.org/>`_ (common template engine syntax and
  features)<commit_msg>Add Travis-CI status<commit_after>========
fiole.py
========

``fiole.py`` is a WSGI micro-framework with the following development
constraints:

* Single file, **no external dependency**
* Provide enough features to build a web application with minimal effort
* Embed **a compact template engine**
* Keep the module reasonably small


Main features:

* Routing
* Methods GET/HEAD/POST/PUT/DELETE
* Error handlers
* File uploads
* Static files
* Fast template engine
* Secure cookies


**Disclaimer:** this framework is intentionally limited.  If you need a robust
and scalable solution, look elsewhere.


Example
=======

::

  from fiole import get, run_fiole

  @get('/')
  def index(request):
      return 'Hello World!'

  run_fiole()

See ``examples/`` for more usages:

::

  python fiole.py examples


Thanks
======

Thank you to <NAME> (toastdriven) for `itty
<https://github.com/toastdriven/itty#readme>`_, the itty-bitty web framework
which helped me to kick-start the project.

Thank you to <NAME> (akorn) for his blazingly fast and elegant
template library `wheezy.template <http://pythonhosted.org/wheezy.template/>`_:
it is the inspiration for the template engine of ``fiole.py``.

The following projects were also a great source of ideas:

* `Werkzeug <http://werkzeug.pocoo.org/>`_ (``HTTPHeaders`` and
  ``EnvironHeaders`` datastructures)
* `Bottle <http://bottlepy.org/>`_ (embedding a simple template engine)
* `Jinja2 <http://jinja.pocoo.org/>`_ and `Mako
  <http://www.makotemplates.org/>`_ (common template engine syntax and
  features)


.. image:: https://travis-ci.org/florentx/fiole.png?branch=master
   :target: https://travis-ci.org/florentx/fiole
   :alt: Build status
{'fraction_non_alphanumeric': 0.12984615384615383, 'fraction_numerical': 0.0006153846153846154, 'mean_word_length': 4.4455611390284755, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 19, 'https://': 4, 'lorem ipsum': 0, 'www.': 2, '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': '5465581', 'n_tokens_mistral': 1060, 'n_tokens_neox': 1016, 'n_words': 348}