blob: d2eac94bc5e5ca5ea83808f52b7e965631113e2f [file] [log] [blame]
# -*- coding: utf-8 -*-
"""
jinja
~~~~~
Jinja is a `sandboxed`_ template engine written in pure Python. It
provides a `Django`_ like non-XML syntax and compiles templates into
executable python code. It's basically a combination of Django templates
and python code.
Nutshell
--------
Here a small example of a Jinja template::
{% extends 'base.html' %}
{% block title %}Memberlist{% endblock %}
{% block content %}
<ul>
{% for user in users %}
<li><a href="{{ user.url|e }}">{{ user.username|e }}</a></li>
{% endfor %}
</ul>
{% endblock %}
Philosophy
----------
Application logic is for the controller but don't try to make the life
for the template designer too hard by giving him too few functionality.
For more informations visit the new `jinja webpage`_ and `documentation`_.
Note
----
This is the Jinja 1.0 release which is completely incompatible with the
old "pre 1.0" branch. The old branch will still receive security updates
and bugfixes but the 1.0 branch will be the only version that receives
support.
If you have an application that uses Jinja 0.9 and won't be updated in
the near future the best idea is to ship a Jinja 0.9 checkout together
with the application.
The `Jinja tip`_ is installable via `easy_install` with ``easy_install
Jinja==dev``.
.. _sandboxed: http://en.wikipedia.org/wiki/Sandbox_(computer_security)
.. _Django: http://www.djangoproject.com/
.. _jinja webpage: http://jinja.pocoo.org/
.. _documentation: http://jinja.pocoo.org/documentation/index.html
.. _Jinja tip: http://dev.pocoo.org/hg/jinja-main/archive/tip.tar.gz#egg=Jinja-dev
"""
import os
import sys
import ez_setup
ez_setup.use_setuptools()
from distutils.command.build_ext import build_ext
from distutils.errors import CCompilerError, DistutilsError
from setuptools import setup, Extension, Feature
def list_files(path):
for fn in os.listdir(path):
if fn.startswith('.'):
continue
fn = os.path.join(path, fn)
if os.path.isfile(fn):
yield fn
class optional_build_ext(build_ext):
def run(self):
try:
build_ext.run(self)
except DistutilsError, e:
self.compiler = None
self._setup_error = e
def build_extension(self, ext):
try:
if self.compiler is None:
raise self._setup_error
build_ext.build_extension(self, ext)
except CCompilerError, e:
print '=' * 79
print 'INFORMATION'
print ' the speedup extension could not be compiled, Jinja will'
print ' fall back to the native python classes.'
print '=' * 79
except:
e = sys.exc_info()[1]
print '=' * 79
print 'WARNING'
print ' could not compile optional speedup extension. This is'
print ' is not a real problem because Jinja provides a native'
print ' implementation of those classes but for best performance'
print ' you could try to reinstall Jinja after fixing this'
print ' problem: %s' % e
print '=' * 79
setup(
name='Jinja',
version='1.3',
url='http://jinja.pocoo.org/',
license='BSD',
author='Armin Ronacher',
author_email='armin.ronacher@active-4.com',
description='A small but fast and easy to use stand-alone template '
'engine written in pure python.',
long_description = __doc__,
# jinja is egg safe. But because we distribute the documentation
# in form of html and txt files it's a better idea to extract the files
zip_safe=False,
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Web Environment',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: Text Processing :: Markup :: HTML'
],
keywords=['python.templating.engines'],
packages=['jinja', 'jinja.translators', 'jinja.contrib'],
data_files=[
('docs/html', list(list_files('docs/html'))),
('docs/txt', list(list_files('docs/src')))
],
entry_points='''
[python.templating.engines]
jinja = jinja.plugin:BuffetPlugin
''',
extras_require={'plugin': ['setuptools>=0.6a2']},
features={
'speedups': Feature(
'optional C-speed enhancements',
standard=True,
ext_modules=[
Extension('jinja._speedups', ['jinja/_speedups.c'])
]
),
'extended-debugger': Feature(
'extended debugger',
standard=True,
ext_modules=[
Extension('jinja._debugger', ['jinja/_debugger.c'])
]
)
},
cmdclass={'build_ext': optional_build_ext}
)