ANN: pyTenjin 0.8.0 - much faster template engine than Django

kwatch kwatch at gmail.com
Sat Jun 6 18:44:42 CEST 2009


I have released pyTenjin 0.8.0
http://www.kuwata-lab.com/tenjin/

pyTenjin is the fastest template engine for Python.

* Very fast (about 10 times faster than Django template engine)
* Easy to learn (no need to learn template-original language)
* Full-featured (layout template, partial template,
preprocessing, ...)
* Very small (only 1,200 lines, one file)
* Goole AppEngine supported.
  http://www.kuwata-lab.com/tenjin/pytenjin-faq.html#faq-google-appengine



Changes from 0.7.0
------------------

  * !!IMPORTANT!!
    HTML helper function 'tagattr()' is renamed to 'tagattrs()'.
    (Notice that new 'tagattr()' is added. See below.)

  * 'tagattrs()' is changed to add ' ' (space) at the first character.
    ex.
      (0.7.0)  tagattr(klass='error')     #=> 'class="error"'
      (0.7.1)  tagattrs(klass='error')    #=> ' class="error"'

  * 'tagattrs()' is changed to handle 'checked', 'selected', and
    'disabled' attributes.
    ex.
       >>> from tenjin.helpers.html import *
       >>> tagattrs(checked=True, selected='Y', disabled=1)
       ' checked="checked" selected="selected" disabled="disabled"'
       >>> tagattrs(checked=False, selected='', disabled=0)
       ''


Bugfix
------

  * !!IMPORTANT!!
    Template caching is changed to keep template file's timestamp
    instead of create time of cached object. See
    http://groups.google.com/group/kuwata-lab-products/browse_thread/thread/a0d447c282fb383d#msg_de39557405c9b656
    for details. (Thanks Steve)


Enhancements
------------

  * Add new HTML helper function 'tagattr()'.
    (Notice that 'tagattr()' in 0.7.0 is renamed into 'tagattrs()'.)
    ex.
      >>> from tenjin.helpers.html import *
      >>> tagattr('size', 20)
      ' size="20"'
      >>> tagattr('size', 0)
      ''
      >>> tagattr('size', 20, 'large')
      ' size="large"'
      >>> size = 20        # you can use tagattrs() instead of tagattr
()
      >>> tagattrs(size=(size and 'large'))
      ' size="large"'

  * Add new HTML helper function 'new_cycle()'.
    ex.
      >>> from tenjin.helpers.html import *
      >>> cycle = new_cycle('odd, 'even')
      >>> cycle()
      'odd'
      >>> cycle()
      'even'
      >>> cycle()
      'odd'
      >>> cycle()
      'even'

  * (experimental) Template converter is changed to add dummy if-
statement
    when first Python statement is indented. (Thanks Steve)
    ex.
      $ cat ex.pyhtml
      <html>
        <body>
          <ul>
            <?py for item in items: ?>
            <li>${item}</li>
            <?py #end ?>
          </ul>
        </body>
      </html>
      $ pytenjin -sb ex.pyhtml
      _buf.extend(('''<html>
        <body>
          <ul>\n''', ));
      if True: ## dummy
            for item in items:
                _buf.extend(('''      <li>''', escape(to_str(item)),
'''</li>\n''', ));
            #end
            _buf.extend(('''    </ul>
        </body>
      </html>\n''', ));

  * Update User's Guide and FAQ.


Have fun!

--
regards,
makoto kuwata




More information about the Python-list mailing list