some more documentation updates and minor code cleanups. Additionally True and true...
[jinja2.git] / setup.py
index 90f7b2b82b7b3f4de911ee0f7a0c609902a40246..8cc724cf878789d57f4dced011f815fd83f7348d 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1,14 +1,52 @@
 # -*- 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/
+.. _jinja webpage: http://jinja2.pocoo.org/
+.. _documentation: http://jinja2.pocoo.org/documentation/index.html
+.. _Jinja 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, DistutilsError
 from setuptools import setup, Extension, Feature
-from inspect import getdoc
+from distutils.command.build_ext import build_ext
+from distutils.errors import CCompilerError, DistutilsPlatformError
 
 
 def list_files(path):
@@ -20,53 +58,57 @@ def list_files(path):
             yield fn
 
 
+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
+
+
 class optional_build_ext(build_ext):
+    """This class allows C extension building to fail."""
 
     def run(self):
         try:
             build_ext.run(self)
-        except DistutilsError, e:
-            self.compiler = None
-            self._setup_error = e
+        except DistutilsPlatformError:
+            self._unavailable()
 
     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
+        except CCompilerError, x:
+            self._unavailable()
+
+    def _unavailable(self):
+        width = get_terminal_width()
+        print '*' * width
+        print """WARNING:
+An optional C extension could not be compiled, speedups will not be
+available."""
+        print '*' * width
 
 
 setup(
-    name='Jinja',
-    version='1.3',
+    name='Jinja2',
+    version='2.0dev',
     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),
+    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',
+        'Development Status :: 4 Beta',
         'Environment :: Web Environment',
         'Intended Audience :: Developers',
         'License :: OSI Approved :: BSD License',
@@ -76,32 +118,21 @@ setup(
         'Topic :: Software Development :: Libraries :: Python Modules',
         'Topic :: Text Processing :: Markup :: HTML'
     ],
-    keywords=['python.templating.engines'],
-    packages=['jinja', 'jinja.translators'],
+    packages=['jinja2'],
     data_files=[
-        ('docs/html', list(list_files('docs/html'))),
-        ('docs/txt', list(list_files('docs/src')))
+        ('docs', list(list_files('docs/_build/html')))
     ],
-    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',
+        'speedups': Feature("optional C speed-enhancements",
             standard=True,
             ext_modules=[
-                Extension('jinja._debugger', ['jinja/_debugger.c'])
+                Extension('jinja2._speedups', ['jinja2/_speedups.c'])
             ]
         )
     },
-    cmdclass={'build_ext': optional_build_ext}
+    extras_require={'i18n': ['Babel>=0.8']},
+    entry_points="""
+    [babel.extractors]
+    jinja2 = jinja2.ext:babel_extract[i18n]
+    """
 )