Metadata-Version: 2.0 Name: static3 Version: 0.7.0 Summary: A really simple WSGI way to serve static (or mixed) content. Home-page: https://github.com/rmohr/static3 Author: Roman Mohr Author-email: roman@fenkhuber.at License: LGPL Keywords: wsgi web http static content webapps Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) Classifier: Natural Language :: English Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Topic :: Software Development :: Libraries Classifier: Topic :: Utilities Provides-Extra: GenshiMagic Requires-Dist: Genshi; extra == 'GenshiMagic' Provides-Extra: KidMagic Requires-Dist: kid; extra == 'KidMagic' .. -*- mode: rst; coding: utf-8 -*- static3 - A really simple WSGI way to serve static (or mixed) content. ==================================================================================== .. image:: https://travis-ci.org/rmohr/static3.svg?branch=master :target: https://travis-ci.org/rmohr/static3 .. contents:: Table of Contents :backlinks: top This software is a Python3 compatible fork of Luke Arnos library static_. The library is now Python3 compatible and Genshi_ support (the sucessor of kid_) is added. On Python2 Genshi and/or kid can be used as template engine. On Python3 only Genshi is available. This library provides an easy way to include static content in your WSGI applications. There is a convenience method for serving files located via pkg_resources. There are also facilities for serving mixed (static and dynamic) content using "magic" file handlers. Python builtin string substitution, kid and Genshi template support are provided and it is easy to roll your own handlers. Note that this distribution does not require kid or Genshi unless you want to use that type of template. Also provides a command of the same name as a convenience when you just want to share a little content over HTTP, ad hoc. Installation and Usage ---------------------- Latest release via PIP:: pip install static3 Installation via GitHub:: git clone https://github.com/rmohr/static3.git cd static3 pip install . Cling ^^^^^ `Cling` serves static content only. Just give it the base directory with your files you want to make accessible. You get a full WSGI app with an example as simple as that:: from static import Cling from wsgiref.simple_server import make_server my_app = Cling("/my/directory") make_server("localhost", 9999, my_app).serve_forever() Now you can access everything in the given directory via http://localhost:9999.D Serving compressed files ^^^^^^^^^^^^^^^^^^^^^^^^ If a gzip compressed file with the ´gz´ postfix is present, it is served, along with the corresponding headers. So if the file 'index.html' and the file 'index.html.gz' are present, the file 'index.html.gz' is served, if the the client indicated that it supports gzipped content. Additionally, you can configure arbitrary headers. You can match files by mime type, file extension, or prefix. For example, the following would add Cache-Control headers to paths with a css mime type for 10s, no-cache for all paths ending in .js for 100s, and add CORS header to all paths under the /imgs/ dir:: headers = [ {'type': 'text/css', 'Cache-Control': 'max-age=10'}, {'ext': '.js', 'Cache-Control': 'no-cache'}, {'prefix': '/imgs/', 'Access-Control-Allow-Origin': '*'}, ] Cling("/my/directory", headers=headers) Shock ^^^^^ `Shock` has the same basic functionality like `Cling` but with Shock we can also have some templating fun. Shock comes with three templating backends. String substitution, kid and Genshi. The decision which backend to use is done by examining the extension of the file to serve. The file extensions are 'stp', 'kid' and 'genshi'. So if you want to provide a file called 'index.html' via the kid backend, name your file 'index.html.kid'. A short example might look like this:: from static import Shock, KidMagic from wsgiref.simple_server import make_server my_app = Shock("/my/directory", magics=[KidMagic(title="Hello World")]) make_server("localhost", 9999, my_app).serve_forever() And the example 'index.html.kid'::