Hi<div><br></div><div>I have been using zope.pagetemplate for quite some time within repoze.bfg projects and bobo (+zope.component) on google appengine</div><div>(python 2.5.x). I have just been doing some upgrades etc... and discovered that zope.pagetemplate in 3.5.2 has introduced a whole heap of new dependancies.</div>

<div><br></div><div>In 3.5.0 non testing install requirements where </div><div><br></div><div><div>setuptools</div><div>zope.interface</div><div>zope.tales</div><div>zope.tal</div></div><div><br></div><div>where as 3.5.2 install requires</div>
<div><br></div>
<div><div>setuptools</div><div>zope.interface</div><div>zope.component</div><div>zope.security [untrustedpython]</div><div>zope.tales</div><div>zope.tal</div><div>zope.i18n</div><div>zope.i18nmessageid</div><div>zope.traversing</div>

</div><div><br></div><div><br></div><div>Now I already had i18n, i18nmessageid and zope.component, zope.interface as I was already using them, but now zope.security and zope.traversing means I also now get </div><div><br>

</div><div><div>zope.browser-1.3-py2.5.egg</div><div>zope.contenttype-3.5.1-py2.5.egg</div><div>zope.exceptions-3.6.1-py2.5.egg</div><div>zope.location-3.9.0-py2.5.egg</div><div>zope.publisher-3.12.4-py2.5.egg</div><div>
zope.security-3.7.3-py2.5-linux-x86_64.egg</div>
<div>zope.traversing-3.13-py2.5.egg</div></div><div>zope.proxy-3.6.1-py2.5-linux-x86_64.egg</div><div><br></div><div>I know that zope.pagetemplate.engine actually had a dependency on zope.traversing but this was never expressed in the EGG-INFO/requires.txt in 3.5.0.  I used my own engine given I always running trusted code.  (I am using metal as well).</div>
<div><br></div><div>So now for my modest proposal,  do you think it would be feasible to move the restricted engine implementations out of zope.pagetemplate.engine and into some higher level package and provide a simple trusted engine that anyone can use (that supports metal as well) </div>
<div><br></div><div><div>As the architecture.txt  for zope.pagetemplate says</div><div><br></div><div>- An *expression engine* is responsible for compiling expressions and</div><div>  for creating expression execution contexts.  It is common for</div>
<div>  applications to override expression engines to provide custom</div><div>  expression support or to change the way expressions are implemented.</div><div>  The `zope.app.pagetemplate` package uses this to implement trusted</div>
<div>  and untrusted evaluation; a different engine is used for each, with</div><div>  different implementations of the same type of expressions.</div><div><br></div><div>So maybe the best place for the full expression engines would be zope.app.pagetemplate.</div>
</div><div><br></div><div>This would seem to be in keeping with a lot of the work, breaking down core zope technologies into re-usable (outside of a pure zope stack) components.</div><div><br></div><div>This would in theory bring the dependencies back down to </div>
<div><br></div><div>zope.interface</div><div>zope.tales</div><div>zope.tal</div><div>zope.i18n </div><div>zope.i18nmessageid</div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><br></div><div>If people think this is a good idea, I am quite willing work on this (with guidance ;-), so thoughts, comments welcome.</div>
<div><br></div><div>TIA</div><div><br></div><div>Tim Hoffman</div><div> </div><div><br></div><div><br></div><div><br></div><div><br></div>