Skip to main content

XML-based template compiler.

Project description

Overview

Chameleon compiles templates to Python byte-code. It includes a complete implementation of the Zope Page Templates (ZPT) language and a partial implementation of the Genshi language.

The engine itself performs 10-15 times better than the reference implementation and real-world benchmarks show an overall performance improvement in complex applications of 30-50%.

Compatibility

Works on Python 2.4, 2.5 and 2.6, including Google App Engine.

Development

The code is maintained in a subversion repository:

http://svn.repoze.org/chameleon/trunk

If you want to contribute or need support, join #repoze on freenode irc or write the mailinglist.

Changes

1.2.12 (released 2010-09-09)

  • Parser is now able to parse documents which contain non-structured fragments.

  • Compiler now reports an error if an expression type is unknown.

  • Edge-case issue where an expression result was actually not a dynamic value, but a static string (e.g. string: Hello).

1.2.11 (released 2010-09-07)

  • Avoid escaping already computed content from named regions inside a translation block.

  • Always generate dynamic message ids dynamically when unnamed elements are present.

  • Fixed an issue where the presence of an unnamed elements inside an anonymous translation block would result in an error when translation failed.

  • Put a lock around compilation. This should guarantee stability (some reports suggest that there’s code in the compilation loop which is not thread-safe) without a drop in performance (GIL is there, in spite all).

1.2.10 (released 2010-07-15)

  • Fixed an issue where it was not possible to extend a macro by providing the template instance.

1.2.9 (released 2010-07-09)

  • When using unnamed elements in a translation clause, use the element visit function to generate output, rather than static serialization.

  • Fix handling of i18n:attributes in Babel template extractor.

1.2.8 (released 2010-07-08)

  • Make the implementation used for XIncludes minimally hookable by causing chameleon.core.template.TemplateFile to use symbolic self.xincludes_class constructor instead of the chameleon.core.template.XIncludes class directly.

1.2.7 (released 2010-07-08)

  • Update Babel extractor for python to check source file encoding. This fixes problems with non-ASCII strings.

1.2.6 (released 2010-06-21)

  • Resolve real path before checking the XInclude registry. This fixes cache misses when using relative paths.

1.2.5 (released 2010-06-21)

  • Use a blacklist to filter python builtins available in expressions. This fixes the disappearance of many common builtins in the previous release.

1.2.4 (released 2010-06-21)

  • Fix in Babel python i18n extractor: correct handling of messages with a newline before the start of a parameter.

  • Drop list of rarely used builtins from scope (such as help); meanwhile, the builtins that are made available won’t be replaced by arguments passed into the template.

    We can change this behavior by adding names to the list of transient symbols; however, this is expensive. The right place to do it would be the code stream’s dictionary of required symbols, but it’s currently a cumbersome solution.

    Consider this a temporary fix.

  • Fixed issue where an interpolation escape would indeed escape interpolation, but also display in the output. [sklein]

  • Translate attributes that are messages.

1.2.3 (released 2010-04-19)

  • Added parameter debug to template constructor to enable debug mode. The default value is taken from the CHAMELEON_DEBUG environment value and defaults to False.

    The use of debug mode is recommended during development.

  • Improved exception output in debug-mode; for nested usage, sections now carry the correct filename.

  • Fixed an issue where an incorrect expression annotation would be shown, or none at all.

  • When in debug-mode, take steps to ensure traceback is not swallowed in properties by explicit invocation.

1.2.2 (released 2010-04-17)

  • Fixed regression where objects that are not strings or numbers would not output due to a recent change in policy that subjected such objects to the translation machinery. However, the default translation function had a bug that instead returned None.

    The new behavior is that such objects are coerced to unicode by default.

    Note that if zope.i18n is available, an alternative translation function is used; this function, however, has the correct behavior already.

  • Fixed issue where nested translations would drop named blocks due to a name clash.

1.2.1 (released 2010-04-07)

  • Fixed issue where decorators used internally by the compiler would be silently dropped during compilation on Python 2.4. This fix solves an issue with match templates not being processed.

  • Objects which are not strings or numbers, and which do not provide an __html__ method, are now considered i18n messages. This means that they are automatically translated (using interpolation or tag-based text insertion or replacement).

  • Fixed issue where translate parameter would not be applicable on file-based templates.

  • Add Babel message extractors for Python, ZPT and Genshi files.

  • Correctly handle translations where a msgid has an empty translation.

1.2.0 (released 2010-03-29)

  • Fixed issue where nested translations would fail.

  • Added support for passing in a translation function to the template constructor.

  • Fixed issue where translation name mappings would conflict with template function definitions.

  • Fixed symbol lookup issue with list comprehensions and lambda expressions.

  • Fixed issue with interpolation flag and CDATA; the effect of this flag is now recursive, which indirectly means that CDATA elements will be affected by a setting on a parent tag.

  • XML namespace fixes.

  • Template instances may now be used as macros; this will use the template in its entirety, including any XML declarations. This addresses issue #139.

  • Integrated Genshi implementation.

  • Allow expression interpolation on any tag which is not part of the Chameleon or ZPT namespaces (e.g. TAL, METAL, I18N or META).

  • Improve XML parsing error handling.

1.1.2 (released 2010-02-24)

  • Avoid printing document header strings (XML header and DOCTYPE) twice; this would previously happen if a template would define these and use a macro on the top level which also provided them.

  • The repeat variable attributes (odd, even etc.) are now callable strings, e.g. legacy users may still call these attributes, but it is no longer required.

  • The odd and even attributes now return the English strings "odd" and "even" in place of True and the empty string "" instead of False.

1.1.1 (released 2010-01-26)

  • Python 2.5 compatibility fixes (symptom: TypeError: default __new__ takes no parameters with the statement generating the error something like ast.Name("econtext", ast.Load())).

1.1 (released 2010-01-26)

  • Made all tests compatible with Python 2.4.

  • Use the 2.5 AST for code transformation for compatibility with Google App Engine. The AST utilities required were copied from Genshi (license document included).

1.0.8 (released 2010-01-12)

1.0.7 (released 2010-01-07)

  • Fixed encoding issue of translated attributes. [kobold]

  • Fixed translation issue, that would prevent translation of tag contents with both named and unnamed subtags. [kobold]

  • Fixed issue where messages could contain a double space. [kobold]

1.0.6 (released 2009-12-14)

  • Fixed white space issue.

  • Fixed character encoding issue.

  • Fixed issue where macro extension would fail.

1.0.5 (released 2009-12-08)

  • Fixed issue where the translation compiler would break on messages that contained the formatting character ‘%’.

  • Fixed white space issue.

1.0.4 (released 2009-11-15)

  • Fixed issue where the file-based template constructor did not accept the encoding parameter.

  • Use more caution when falling back to dictionary lookup.

1.0.3 (released 2009-11-12)

  • Fixed issue where traceback would contain erroneous debugging information. The source code is now taken directly from the traceback object.

  • Include Python expression in syntax error exception message.

1.0.2 (released 2009-11-10)

  • Really fixed ZCA import fallbacks.

1.0.1 (released 2009-11-04)

  • Fixed ZCA import fallbacks.

1.0 (released 2009-11-01)

Features:

  • HTML5 doctype is now supported.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Chameleon-1.2.12.tar.gz (117.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page