Run `./2to3.py -w jinja2`
[jinja2.git] / setup.py
index 837de51e4c022b33838cfa5d34b2fd53bf7e97c3..414795620a176ddcbe342103ebc7516dce8c5566 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1,12 +1,11 @@
 # -*- coding: utf-8 -*-
 """
 # -*- 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
 --------
 
 Nutshell
 --------
@@ -18,7 +17,7 @@ Here a small example of a Jinja template::
     {% block content %}
       <ul>
       {% for user in users %}
     {% 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 %}
       {% endfor %}
       </ul>
     {% endblock %}
@@ -29,74 +28,53 @@ 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.
 
 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/
 
 .. _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 sys
-import ez_setup
-ez_setup.use_setuptools()
 
 from setuptools import setup, Extension, Feature
 
 from setuptools import setup, Extension, Feature
-from distutils.command.build_ext import build_ext
-from distutils.errors import CCompilerError, DistutilsPlatformError
-
-
-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
 
 
+debugsupport = Feature(
+    'optional C debug support',
+    standard=False,
+    ext_modules = [
+        Extension('jinja2._debugsupport', ['jinja2/_debugsupport.c']),
+    ],
+)
 
 
-class optional_build_ext(build_ext):
-    """This class allows C extension building to fail."""
-
-    def run(self):
-        try:
-            build_ext.run(self)
-        except DistutilsPlatformError:
-            self._unavailable()
-
-    def build_extension(self, ext):
-        try:
-            build_ext.build_extension(self, ext)
-        except CCompilerError, x:
-            self._unavailable()
 
 
-    def _unavailable(self):
-        print '*' * 70
-        print """WARNING:
-An optional C extension could not be compiled, speedups will not be
-available."""
-        print '*' * 70
+# 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(
 
 
 setup(
-    name='Jinja 2',
-    version='2.0dev',
+    name='Jinja2',
+    version='2.7-dev',
     url='http://jinja.pocoo.org/',
     license='BSD',
     author='Armin Ronacher',
     url='http://jinja.pocoo.org/',
     license='BSD',
     author='Armin Ronacher',
@@ -104,36 +82,29 @@ setup(
     description='A small but fast and easy to use stand-alone template '
                 'engine written in pure python.',
     long_description=__doc__,
     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
+    # jinja is egg safe. But we hate eggs
     zip_safe=False,
     classifiers=[
     zip_safe=False,
     classifiers=[
-        'Development Status :: 4 Beta',
+        'Development Status :: 5 - Production/Stable',
         'Environment :: Web Environment',
         'Intended Audience :: Developers',
         'License :: OSI Approved :: BSD License',
         'Operating System :: OS Independent',
         'Programming Language :: Python',
         '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'
     ],
         'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
         'Topic :: Software Development :: Libraries :: Python Modules',
         'Topic :: Text Processing :: Markup :: HTML'
     ],
-    packages=['jinja2'],
-    data_files=[
-        ('docs/html', list(list_files('docs/html'))),
-        ('docs/txt', list(list_files('docs/src')))
-    ],
-    features={
-        'speedups': Feature("optional C speed-enhancements",
-            standard=True,
-            ext_modules=[
-                Extension('jinja2._speedups', ['jinja2/_speedups.c'])
-            ]
-        )
-    },
+    packages=['jinja2', 'jinja2.testsuite', 'jinja2.testsuite.res',
+              'jinja2._markupsafe'],
     extras_require={'i18n': ['Babel>=0.8']},
     extras_require={'i18n': ['Babel>=0.8']},
+    test_suite='jinja2.testsuite.suite',
+    include_package_data=True,
     entry_points="""
     [babel.extractors]
     entry_points="""
     [babel.extractors]
-    jinja2 = jinja.i18n:babel_extract[i18n]
-    """
+    jinja2 = jinja2.ext:babel_extract[i18n]
+    """,
+    features={'debugsupport': debugsupport},
+    **extra
 )
 )