# -*- coding: utf-8 -*-
"""
-jinja
-~~~~~
+Jinja2
+~~~~~~
-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.
+Jinja2 is a template engine written in pure Python. It provides a
+`Django`_ inspired non-XML syntax but supports inline expressions and
+an optional `sandboxed`_ environment.
Nutshell
--------
{% block content %}
<ul>
{% for user in users %}
- <li><a href="{{ user.url|e }}">{{ user.username|e }}</a></li>
+ <li><a href="{{ user.url }}">{{ user.username }}</a></li>
{% endfor %}
</ul>
{% endblock %}
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``.
+For more informations visit the new `Jinja2 webpage`_ and `documentation`_.
.. _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
+.. _Jinja2 webpage: http://jinja.pocoo.org/
+.. _documentation: http://jinja.pocoo.org/2/documentation/
"""
-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
+debugsupport = Feature(
+ 'optional C debug support',
+ standard=False,
+ ext_modules = [
+ Extension('jinja2._debugsupport', ['jinja2/_debugsupport.c']),
+ ],
+)
-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
+# tell distribute to use 2to3 with our own fixers.
+extra = {}
+if sys.version_info >= (3, 0):
+ extra.update(
+ use_2to3=True,
+ use_2to3_fixers=['custom_fixers']
+ )
+
+# ignore the old '--with-speedups' flag
+try:
+ speedups_pos = sys.argv.index('--with-speedups')
+except ValueError:
+ pass
+else:
+ sys.argv[speedups_pos] = '--with-debugsupport'
+ sys.stderr.write('*' * 74 + '\n')
+ sys.stderr.write('WARNING:\n')
+ sys.stderr.write(' the --with-speedups flag is deprecated, assuming '
+ '--with-debugsupport\n')
+ sys.stderr.write(' For the actual speedups install the MarkupSafe '
+ 'package.\n')
+ sys.stderr.write('*' * 74 + '\n')
setup(
- name='Jinja',
- version='1.3',
+ name='Jinja2',
+ version='2.7-dev',
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
+ long_description=__doc__,
+ # jinja is egg safe. But we hate eggs
zip_safe=False,
classifiers=[
'Development Status :: 5 - Production/Stable',
'License :: OSI Approved :: BSD License',
'Operating System :: OS Independent',
'Programming Language :: Python',
+ 'Programming Language :: Python :: 3',
'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}
+ packages=['jinja2', 'jinja2.testsuite', 'jinja2.testsuite.res',
+ 'jinja2._markupsafe'],
+ extras_require={'i18n': ['Babel>=0.8']},
+ test_suite='jinja2.testsuite.suite',
+ include_package_data=True,
+ entry_points="""
+ [babel.extractors]
+ jinja2 = jinja2.ext:babel_extract[i18n]
+ """,
+ features={'debugsupport': debugsupport},
+ **extra
)