Run `./2to3.py -w jinja2`
[jinja2.git] / setup.py
index d8246902e8da572520b1c6e32d523a5bfe341ced..414795620a176ddcbe342103ebc7516dce8c5566 100644 (file)
--- a/setup.py
+++ b/setup.py
 # -*- coding: utf-8 -*-
-import jinja
-import os
-import sys
-import ez_setup
-ez_setup.use_setuptools()
+"""
+Jinja2
+~~~~~~
 
-from distutils.command.build_ext import build_ext
-from distutils.errors import CCompilerError, DistutilsError
-from setuptools import setup, Extension, Feature
-from inspect import getdoc
+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
+--------
 
-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
+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 %}
 
-class optional_build_ext(build_ext):
+Philosophy
+----------
 
-    def run(self):
-        try:
-            build_ext.run(self)
-        except DistutilsError, e:
-            self.compiler = None
-            self._setup_error = e
+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.
 
-    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
+For more informations visit the new `Jinja2 webpage`_ and `documentation`_.
+
+.. _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/
+"""
+import sys
+
+from setuptools import setup, Extension, Feature
+
+debugsupport = Feature(
+    'optional C debug support',
+    standard=False,
+    ext_modules = [
+        Extension('jinja2._debugsupport', ['jinja2/_debugsupport.c']),
+    ],
+)
+
+
+# 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.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),
-    # 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 = [
+    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 we hate eggs
+    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',
+        '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'],
-    data_files = [
-        ('docs', list(list_files('docs/build'))),
-        ('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
 )