# -*- coding: utf-8 -*-
-import jinja
+"""
+Jinja2
+~~~~~~
+
+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
+--------
+
+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 }}">{{ user.username }}</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 `Jinja2 webpage`_ and `documentation`_.
+
+The `Jinja2 tip`_ is installable via `easy_install` with ``easy_install
+Jinja2==dev``.
+
+.. _sandboxed: http://en.wikipedia.org/wiki/Sandbox_(computer_security)
+.. _Django: http://www.djangoproject.com/
+.. _Jinja2 webpage: http://jinja.pocoo.org/
+.. _documentation: http://jinja.pocoo.org/2/documentation/
+.. _Jinja2 tip: http://dev.pocoo.org/hg/jinja2-main/archive/tip.tar.gz#egg=Jinja2-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
from setuptools import setup, Extension, Feature
-from inspect import getdoc
-
-
-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 build_extension(self, ext):
- try:
- 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
+from distutils.command.build_ext import build_ext
+from distutils.errors import CCompilerError, DistutilsPlatformError
+
+
+#: don't change the variable and assignment. the fabfile parses this
+#: file to get the version for deployment from it.
+VERSION = '2.2'
+
+
+data_files = []
+documentation_path = 'docs/_build/html'
+if os.path.exists(documentation_path):
+ documentation_files = []
+ for fn in os.listdir(documentation_path):
+ if not fn.startswith('.'):
+ fn = os.path.join(documentation_path, fn)
+ if os.path.isfile(fn):
+ documentation_files.append(fn)
+ data_files.append(('docs', documentation_files))
+
+
+def get_terminal_width():
+ """Return the current terminal dimensions."""
+ try:
+ from struct import pack, unpack
+ from fcntl import ioctl
+ from termios import TIOCGWINSZ
+ s = pack('HHHH', 0, 0, 0, 0)
+ return unpack('HHHH', ioctl(sys.stdout.fileno(), TIOCGWINSZ, s))[1]
+ except:
+ return 80
setup(
- name = 'Jinja',
- version = '1.1',
- 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 = getdoc(jinja),
+ name='Jinja2',
+ version=VERSION,
+ 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 = [
+ zip_safe=False,
+ classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Web Environment',
'Intended Audience :: Developers',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: Text Processing :: Markup :: HTML'
],
- keywords = ['python.templating.engines'],
- packages = ['jinja', 'jinja.translators'],
- data_files = [
- ('docs', list(list_files('docs/build'))),
- ('docs/txt', list(list_files('docs/src')))
- ],
- platforms = 'any',
- 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'])
- ]
- )},
- cmdclass = {'build_ext': optional_build_ext}
+ packages=['jinja2'],
+ data_files=data_files,
+ features={
+ 'speedups': Feature("optional C speed-enhancements",
+ standard=True,
+ ext_modules=[
+ Extension('jinja2._speedups', ['jinja2/_speedups.c'])
+ ]
+ )
+ },
+ extras_require={'i18n': ['Babel>=0.8']},
+ entry_points="""
+ [babel.extractors]
+ jinja2 = jinja2.ext:babel_extract[i18n]
+ """
)