This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description


This package enhances the integration of Chameleon into Plone with

In our deployments we have source checkouts (git) which we are pulled on updates. This may cause templates to be updated on the next request in running instances, which may cause errors because the associated code was not yet reloaded because the zope instance was not yet rebooted. In order to make that more robust we use Chameleon with eager-loading enabled and auto-reload disabled, so that after an instance is started it will no longer read templates.

These options do not work as expected when using for integrating Chameleon in combination with ViewPageTemplateFile instances. ftw.chameleon contains enhancements for making that work well.


  • zope.pagetemplate is patched so that it considers the CHAMELEON_RELOAD configuration: when CHAMELEON_RELOAD is disabled it does not trigger a recooking of the template even when it has changed.
  • When CHAMELEON_EAGER is enabled, all templates will be cooked on startup. This is done by explicitly cooking all known templates in a separate thread.
  • Fire an event when chameleon compiles templates.
  • Log warnings or exceptions when templates are compiled unexpectedly. This helps to pin-point problems with templates which are not cacheable.
  • When CHAMELEON_EAGER is enabled, the templates in portal_skins will be cooked after the first request on the Plone site.


Plone 4.3.x


Buildout example for production:

eggs +=
environment-vars +=
    CHAMELEON_CACHE ${buildout:directory}/var/chameleon-cache

Buildout example for development:

eggs +=
environment-vars +=
    CHAMELEON_CACHE ${buildout:directory}/var/chameleon-cache

You need to make sure that the cache-directory exists. This can be done with buildout:

parts += chameleon-cache

directory = ${buildout:directory}/var/chameleon-cache
recipe = collective.recipe.shelloutput
commands =
    cmd1 = mkdir -p ${chameleon-cache:directory}

environment-vars +=
    CHAMELEON_CACHE ${chameleon-cache:directory}

Environment variables

Name Description Values Recommendation
CHAMELEON_EAGER Parse and comile templates on startup. true, false true
CHAMELEON_RELOAD Reload templates when they have changed. true, false false
CHAMELEON_CACHE File system cache. Path to cache directory. .../var/chameleon-cache
FTW_CHAMELEON_RECOOK_WARNING Warn when recooking templates. true, false true
FTW_CHAMELEON_RECOOK_EXCEPTION Exception when recooking templates. true, false true when using Sentry.

See also the Chameleon documentation.


  1. Fork this repo
  2. Clone your fork
  3. Shell: ln -s development.cfg buildout.cfg
  4. Shell: python
  5. Shell: bin/buildout

Run bin/test to test your changes.

Or start an instance by running bin/instance fg.

Release History

Release History


This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
ftw.chameleon-1.0.0.tar.gz (14.2 kB) Copy SHA256 Checksum SHA256 Source Oct 3, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting