| ========= |
| Changelog |
| ========= |
| |
| 1.0 |
| === |
| |
| .. changelog:: |
| :version: 1.0.4 |
| :released: |
| |
| .. change:: |
| :tags: feature, test |
| |
| The default test runner is now py.test. Running "python setup.py test" |
| will make use of py.test instead of nose. nose still works as a test |
| runner as well, however. |
| |
| .. change:: |
| :tags: bug, lexer |
| :pullreq: github:19 |
| |
| Major improvements to lexing of intricate Python sections which may |
| contain complex backslash sequences, as well as support for the bitwise |
| operator (e.g. pipe symbol) inside of expression sections distinct |
| from the Mako "filter" operator, provided the operator is enclosed |
| within parentheses or brackets. Pull request courtesy Daniel Martin. |
| |
| .. change:: |
| :tags: feature |
| :pullreq: bitbucket:16 |
| |
| Added new method :meth:`.Template.list_defs`. Pull request courtesy |
| Jonathan Vanasco. |
| |
| .. changelog:: |
| :version: 1.0.3 |
| :released: Tue Oct 27 2015 |
| |
| .. change:: |
| :tags: bug, babel |
| :pullreq: bitbucket:21 |
| |
| Fixed an issue where the Babel plugin would not handle a translation |
| symbol that contained non-ascii characters. Pull request courtesy |
| Roman Imankulov. |
| |
| .. changelog:: |
| :version: 1.0.2 |
| :released: Wed Aug 26 2015 |
| |
| .. change:: |
| :tags: bug, installation |
| :tickets: 249 |
| |
| The "universal wheel" marker is removed from setup.cfg, because |
| our setup.py currently makes use of conditional dependencies. |
| In :ticket:`249`, the discussion is ongoing on how to correct our |
| setup.cfg / setup.py fully so that we can handle the per-version |
| dependency changes while still maintaining optimal wheel settings, |
| so this issue is not yet fully resolved. |
| |
| .. change:: |
| :tags: bug, py3k |
| :tickets: 250 |
| |
| Repair some calls within the ast module that no longer work on Python3.5; |
| additionally replace the use of ``inspect.getargspec()`` under |
| Python 3 (seems to be called from the TG plugin) to avoid deprecation |
| warnings. |
| |
| .. change:: |
| :tags: bug |
| :pullreq: bitbucket:18 |
| |
| Update the Lingua translation extraction plugin to correctly |
| handle templates mixing Python control statements (such as if, |
| for and while) with template fragments. Pull request courtesy |
| Laurent Daverio. |
| |
| .. change:: |
| :tags: feature |
| :tickets: 236 |
| |
| Added ``STOP_RENDERING`` keyword for returning/exiting from a |
| template early, which is a synonym for an empty string ``""``. |
| Previously, the docs suggested a bare |
| ``return``, but this could cause ``None`` to appear in the |
| rendered template result. |
| |
| .. seealso:: |
| |
| :ref:`syntax_exiting_early` |
| |
| .. changelog:: |
| :version: 1.0.1 |
| :released: Thu Jan 22 2015 |
| |
| .. change:: |
| :tags: feature |
| :pullreq: bitbucket:9 |
| |
| Added support for Lingua, a translation extraction system as an |
| alternative to Babel. Pull request courtesy Wichert Akkerman. |
| |
| .. change:: |
| :tags: bug, py3k |
| :pullreq: bitbucket:11 |
| |
| Modernized the examples/wsgi/run_wsgi.py file for Py3k. |
| Pull requset courtesy Cody Taylor. |
| |
| .. changelog:: |
| :version: 1.0.0 |
| :released: Sun Jun 8 2014 |
| |
| .. change:: |
| :tags: bug, py2k |
| :pullreq: bitbucket:8 |
| |
| Improved the error re-raise operation when a custom |
| :paramref:`.Template.error_handler` is used that does not handle |
| the exception; the original stack trace etc. is now preserved. |
| Pull request courtesy Manfred Haltner. |
| |
| .. change:: |
| :tags: bug, py2k, filters |
| :pullreq: bitbucket:7 |
| |
| Added an html_escape filter that works in "non unicode" mode. |
| Previously, when using ``disable_unicode=True``, the ``u`` filter |
| would fail to handle non-ASCII bytes properly. Pull request |
| courtesy George Xie. |
| |
| .. change:: |
| :tags: general |
| |
| Compatibility changes; in order to modernize the codebase, Mako |
| is now dropping support for Python 2.4 and Python 2.5 altogether. |
| The source base is now targeted at Python 2.6 and forwards. |
| |
| .. change:: |
| :tags: feature |
| |
| Template modules now generate a JSON "metadata" structure at the bottom |
| of the source file which includes parseable information about the |
| templates' source file, encoding etc. as well as a mapping of module |
| source lines to template lines, thus replacing the "# SOURCE LINE" |
| markers throughout the source code. The structure also indicates those |
| lines that are explicitly not part of the template's source; the goal |
| here is to allow better integration with coverage and other tools. |
| |
| .. change:: |
| :tags: bug, py3k |
| |
| Fixed bug in ``decode.<encoding>`` filter where a non-string object |
| would not be correctly interpreted in Python 3. |
| |
| .. change:: |
| :tags: bug, py3k |
| :tickets: 227 |
| |
| Fixed bug in Python parsing logic which would fail on Python 3 |
| when a "try/except" targeted a tuple of exception types, rather |
| than a single exception. |
| |
| .. change:: |
| :tags: feature |
| :pullreq: bitbucket:5 |
| |
| mako-render is now implemented as a setuptools entrypoint script; |
| a standalone mako.cmd.cmdline() callable is now available, and the |
| system also uses argparse now instead of optparse. Pull request |
| courtesy Derek Harland. |
| |
| .. change:: |
| :tags: feature |
| :pullreq: bitbucket:4 |
| |
| The mako-render script will now catch exceptions and run them |
| into the text error handler, and exit with a non-zero exit code. |
| Pull request courtesy Derek Harland. |
| |
| .. change:: |
| :tags: bug |
| :pullreq: bitbucket:2 |
| |
| A rework of the mako-render script allows the script to run |
| correctly when given a file pathname that is outside of the current |
| directory, e.g. ``mako-render ../some_template.mako``. In this case, |
| the "template root" defaults to the directory in which the template |
| is located, instead of ".". The script also accepts a new argument |
| ``--template-dir`` which can be specified multiple times to establish |
| template lookup directories. Standard input for templates also works |
| now too. Pull request courtesy Derek Harland. |
| |
| .. change:: |
| :tags: feature, py3k |
| :pullreq: github:7 |
| |
| Support is added for Python 3 "keyword only" arguments, as used in |
| defs. Pull request courtesy Eevee. |
| |
| |
| 0.9 |
| === |
| |
| .. changelog:: |
| :version: 0.9.1 |
| :released: Thu Dec 26 2013 |
| |
| .. change:: |
| :tags: bug |
| :tickets: 225 |
| |
| Fixed bug in Babel plugin where translator comments |
| would be lost if intervening text nodes were encountered. |
| Fix courtesy Ned Batchelder. |
| |
| .. change:: |
| :tags: bug |
| :tickets: |
| |
| Fixed TGPlugin.render method to support unicode template |
| names in Py2K - courtesy Vladimir Magamedov. |
| |
| .. change:: |
| :tags: bug |
| :tickets: |
| |
| Fixed an AST issue that was preventing correct operation |
| under alpha versions of Python 3.4. Pullreq courtesy Zer0-. |
| |
| .. change:: |
| :tags: bug |
| :tickets: |
| |
| Changed the format of the "source encoding" header output |
| by the code generator to use the format ``# -*- coding:%s -*-`` |
| instead of ``# -*- encoding:%s -*-``; the former is more common |
| and compatible with emacs. Courtesy Martin Geisler. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 224 |
| |
| Fixed issue where an old lexer rule prevented a template line |
| which looked like "#*" from being correctly parsed. |
| |
| .. changelog:: |
| :version: 0.9.0 |
| :released: Tue Aug 27 2013 |
| |
| .. change:: |
| :tags: bug |
| :tickets: 219 |
| |
| The Context.locals_() method becomes a private underscored |
| method, as this method has a specific internal use. The purpose |
| of Context.kwargs has been clarified, in that it only delivers |
| top level keyword arguments originally passed to template.render(). |
| |
| .. change:: |
| :tags: bug |
| :tickets: |
| |
| Fixed the babel plugin to properly interpret ${} sections |
| inside of a "call" tag, i.e. <%self:some_tag attr="${_('foo')}"/>. |
| Code that's subject to babel escapes in here needs to be |
| specified as a Python expression, not a literal. This change |
| is backwards incompatible vs. code that is relying upon a _('') |
| translation to be working within a call tag. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 187 |
| |
| The Babel plugin has been repaired to work on Python 3. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 207 |
| |
| Using <%namespace import="*" module="somemodule"/> now |
| skips over module elements that are not explcitly callable, |
| avoiding TypeError when trying to produce partials. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 190 |
| |
| Fixed Py3K bug where a "lambda" expression was not |
| interpreted correctly within a template tag; also |
| fixed in Py2.4. |
| |
| 0.8 |
| === |
| |
| .. changelog:: |
| :version: 0.8.1 |
| :released: Fri May 24 2013 |
| |
| .. change:: |
| :tags: bug |
| :tickets: 216 |
| |
| Changed setup.py to skip installing markupsafe |
| if Python version is < 2.6 or is between 3.0 and |
| less than 3.3, as Markupsafe now only supports 2.6->2.X, |
| 3.3->3.X. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 214 |
| |
| Fixed regression where "entity" filter wasn't |
| converted for py3k properly (added tests.) |
| |
| .. change:: |
| :tags: bug |
| :tickets: 212 |
| |
| Fixed bug where mako-render script wasn't |
| compatible with Py3k. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 213 |
| |
| Cleaned up all the various deprecation/ |
| file warnings when running the tests under |
| various Pythons with warnings turned on. |
| |
| .. changelog:: |
| :version: 0.8.0 |
| :released: Wed Apr 10 2013 |
| |
| .. change:: |
| :tags: feature |
| :tickets: |
| |
| Performance improvement to the |
| "legacy" HTML escape feature, used for XML |
| escaping and when markupsafe isn't present, |
| courtesy George Xie. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 209 |
| |
| Fixed bug whereby an exception in Python 3 |
| against a module compiled to the filesystem would |
| fail trying to produce a RichTraceback due to the |
| content being in bytes. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 208 |
| |
| Change default for compile()->reserved_names |
| from tuple to frozenset, as this is expected to be |
| a set by default. |
| |
| .. change:: |
| :tags: feature |
| :tickets: |
| |
| Code has been reworked to support Python 2.4-> |
| Python 3.xx in place. 2to3 no longer needed. |
| |
| .. change:: |
| :tags: feature |
| :tickets: |
| |
| Added lexer_cls argument to Template, |
| TemplateLookup, allows alternate Lexer classes |
| to be used. |
| |
| .. change:: |
| :tags: feature |
| :tickets: |
| |
| Added future_imports parameter to Template |
| and TemplateLookup, renders the __future__ header |
| with desired capabilities at the top of the generated |
| template module. Courtesy Ben Trofatter. |
| |
| 0.7 |
| === |
| |
| .. changelog:: |
| :version: 0.7.3 |
| :released: Wed Nov 7 2012 |
| |
| .. change:: |
| :tags: bug |
| :tickets: |
| |
| legacy_html_escape function, used when |
| Markupsafe isn't installed, was using an inline-compiled |
| regexp which causes major slowdowns on Python 3.3; |
| is now precompiled. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 201 |
| |
| AST supporting now supports tuple-packed |
| function arguments inside pure-python def |
| or lambda expressions. |
| |
| .. change:: |
| :tags: bug |
| :tickets: |
| |
| Fixed Py3K bug in the Babel extension. |
| |
| .. change:: |
| :tags: bug |
| :tickets: |
| |
| Fixed the "filter" attribute of the |
| <%text> tag so that it pulls locally specified |
| identifiers from the context the same |
| way as that of <%block> and <%filter>. |
| |
| .. change:: |
| :tags: bug |
| :tickets: |
| |
| Fixed bug in plugin loader to correctly |
| raise exception when non-existent plugin |
| is specified. |
| |
| .. changelog:: |
| :version: 0.7.2 |
| :released: Fri Jul 20 2012 |
| |
| .. change:: |
| :tags: bug |
| :tickets: 193 |
| |
| Fixed regression in 0.7.1 where AST |
| parsing for Py2.4 was broken. |
| |
| .. changelog:: |
| :version: 0.7.1 |
| :released: Sun Jul 8 2012 |
| |
| .. change:: |
| :tags: feature |
| :tickets: 146 |
| |
| Control lines with no bodies will |
| now succeed, as "pass" is added for these |
| when no statements are otherwise present. |
| Courtesy Ben Trofatter |
| |
| .. change:: |
| :tags: bug |
| :tickets: 192 |
| |
| Fixed some long-broken scoping behavior |
| involving variables declared in defs and such, |
| which only became apparent when |
| the strict_undefined flag was turned on. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 191 |
| |
| Can now use strict_undefined at the |
| same time args passed to def() are used |
| by other elements of the <%def> tag. |
| |
| .. changelog:: |
| :version: 0.7.0 |
| :released: Fri Mar 30 2012 |
| |
| .. change:: |
| :tags: feature |
| :tickets: 125 |
| |
| Added new "loop" variable to templates, |
| is provided within a % for block to provide |
| info about the loop such as index, first/last, |
| odd/even, etc. A migration path is also provided |
| for legacy templates via the "enable_loop" argument |
| available on Template, TemplateLookup, and <%page>. |
| Thanks to Ben Trofatter for all |
| the work on this |
| |
| .. change:: |
| :tags: feature |
| :tickets: |
| |
| Added a real check for "reserved" |
| names, that is names which are never pulled |
| from the context and cannot be passed to |
| the template.render() method. Current names |
| are "context", "loop", "UNDEFINED". |
| |
| .. change:: |
| :tags: feature |
| :tickets: 95 |
| |
| The html_error_template() will now |
| apply Pygments highlighting to the source |
| code displayed in the traceback, if Pygments |
| if available. Courtesy Ben Trofatter |
| |
| .. change:: |
| :tags: feature |
| :tickets: 147 |
| |
| Added support for context managers, |
| i.e. "% with x as e:/ % endwith" support. |
| Courtesy Ben Trofatter |
| |
| .. change:: |
| :tags: feature |
| :tickets: 185 |
| |
| Added class-level flag to CacheImpl |
| "pass_context"; when True, the keyword argument |
| 'context' will be passed to get_or_create() |
| containing the Mako Context object. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 182 |
| |
| Fixed some Py3K resource warnings due |
| to filehandles being implicitly closed. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 186 |
| |
| Fixed endless recursion bug when |
| nesting multiple def-calls with content. |
| Thanks to Jeff Dairiki. |
| |
| .. change:: |
| :tags: feature |
| :tickets: |
| |
| Added Jinja2 to the example |
| benchmark suite, courtesy Vincent Férotin |
| |
| Older Versions |
| ============== |
| |
| .. changelog:: |
| :version: 0.6.2 |
| :released: Thu Feb 2 2012 |
| |
| .. change:: |
| :tags: bug |
| :tickets: 86, 20 |
| |
| The ${{"foo":"bar"}} parsing issue is fixed!! |
| The legendary Eevee has slain the dragon!. Also fixes quoting issue |
| at. |
| |
| .. changelog:: |
| :version: 0.6.1 |
| :released: Sat Jan 28 2012 |
| |
| .. change:: |
| :tags: bug |
| :tickets: |
| |
| Added special compatibility for the 0.5.0 |
| Cache() constructor, which was preventing file |
| version checks and not allowing Mako 0.6 to |
| recompile the module files. |
| |
| .. changelog:: |
| :version: 0.6.0 |
| :released: Sat Jan 21 2012 |
| |
| .. change:: |
| :tags: feature |
| :tickets: |
| |
| Template caching has been converted into a plugin |
| system, whereby the usage of Beaker is just the |
| default plugin. Template and TemplateLookup |
| now accept a string "cache_impl" parameter which |
| refers to the name of a cache plugin, defaulting |
| to the name 'beaker'. New plugins can be |
| registered as pkg_resources entrypoints under |
| the group "mako.cache", or registered directly |
| using mako.cache.register_plugin(). The |
| core plugin is the mako.cache.CacheImpl |
| class. |
| |
| .. change:: |
| :tags: feature |
| :tickets: |
| |
| Added support for Beaker cache regions |
| in templates. Usage of regions should be considered |
| as superseding the very obsolete idea of passing in |
| backend options, timeouts, etc. within templates. |
| |
| .. change:: |
| :tags: feature |
| :tickets: |
| |
| The 'put' method on Cache is now |
| 'set'. 'put' is there for backwards compatibility. |
| |
| .. change:: |
| :tags: feature |
| :tickets: |
| |
| The <%def>, <%block> and <%page> tags now accept |
| any argument named "cache_*", and the key |
| minus the "cache_" prefix will be passed as keyword |
| arguments to the CacheImpl methods. |
| |
| .. change:: |
| :tags: feature |
| :tickets: |
| |
| Template and TemplateLookup now accept an argument |
| cache_args, which refers to a dictionary containing |
| cache parameters. The cache_dir, cache_url, cache_type, |
| cache_timeout arguments are deprecated (will probably |
| never be removed, however) and can be passed |
| now as cache_args={'url':<some url>, 'type':'memcached', |
| 'timeout':50, 'dir':'/path/to/some/directory'} |
| |
| .. change:: |
| :tags: feature/bug |
| :tickets: 180 |
| |
| Can now refer to context variables |
| within extra arguments to <%block>, <%def>, i.e. |
| <%block name="foo" cache_key="${somekey}">. |
| Filters can also be used in this way, i.e. |
| <%def name="foo()" filter="myfilter"> |
| then template.render(myfilter=some_callable) |
| |
| .. change:: |
| :tags: feature |
| :tickets: 178 |
| |
| Added "--var name=value" option to the mako-render |
| script, allows passing of kw to the template from |
| the command line. |
| |
| .. change:: |
| :tags: feature |
| :tickets: 181 |
| |
| Added module_writer argument to Template, |
| TemplateLookup, allows a callable to be passed which |
| takes over the writing of the template's module source |
| file, so that special environment-specific steps |
| can be taken. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 142 |
| |
| The exception message in the html_error_template |
| is now escaped with the HTML filter. |
| |
| .. change:: |
| :tags: bug |
| :tickets: 173 |
| |
| Added "white-space:pre" style to html_error_template() |
| for code blocks so that indentation is preserved |
| |
| .. change:: |
| :tags: bug |
| :tickets: 175 |
| |
| The "benchmark" example is now Python 3 compatible |
| (even though several of those old template libs aren't |
| available on Py3K, so YMMV) |
| |
| |
| .. changelog:: |
| :version: 0.5.0 |
| :released: Wed Sep 28 2011 |
| |
| .. change:: |
| :tags: |
| :tickets: 174 |
| |
| A Template is explicitly disallowed |
| from having a url that normalizes to relative outside |
| of the root. That is, if the Lookup is based |
| at /home/mytemplates, an include that would place |
| the ultimate template at |
| /home/mytemplates/../some_other_directory, |
| i.e. outside of /home/mytemplates, |
| is disallowed. This usage was never intended |
| despite the lack of an explicit check. |
| The main issue this causes |
| is that module files can be written outside |
| of the module root (or raise an error, if file perms aren't |
| set up), and can also lead to the same template being |
| cached in the lookup under multiple, relative roots. |
| TemplateLookup instead has always supported multiple |
| file roots for this purpose. |
| |
| |
| .. changelog:: |
| :version: 0.4.2 |
| :released: Fri Aug 5 2011 |
| |
| .. change:: |
| :tags: |
| :tickets: 170 |
| |
| Fixed bug regarding <%call>/def calls w/ content |
| whereby the identity of the "caller" callable |
| inside the <%def> would be corrupted by the |
| presence of another <%call> in the same block. |
| |
| .. change:: |
| :tags: |
| :tickets: 169 |
| |
| Fixed the babel plugin to accommodate <%block> |
| |
| .. changelog:: |
| :version: 0.4.1 |
| :released: Wed Apr 6 2011 |
| |
| .. change:: |
| :tags: |
| :tickets: 164 |
| |
| New tag: <%block>. A variant on <%def> that |
| evaluates its contents in-place. |
| Can be named or anonymous, |
| the named version is intended for inheritance |
| layouts where any given section can be |
| surrounded by the <%block> tag in order for |
| it to become overrideable by inheriting |
| templates, without the need to specify a |
| top-level <%def> plus explicit call. |
| Modified scoping and argument rules as well as a |
| more strictly enforced usage scheme make it ideal |
| for this purpose without at all replacing most |
| other things that defs are still good for. |
| Lots of new docs. |
| |
| .. change:: |
| :tags: |
| :tickets: 165 |
| |
| a slight adjustment to the "highlight" logic |
| for generating template bound stacktraces. |
| Will stick to known template source lines |
| without any extra guessing. |
| |
| .. changelog:: |
| :version: 0.4.0 |
| :released: Sun Mar 6 2011 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| A 20% speedup for a basic two-page |
| inheritance setup rendering |
| a table of escaped data |
| (see http://techspot.zzzeek.org/2010/11/19/quick-mako-vs.-jinja-speed-test/). |
| A few configurational changes which |
| affect those in the I-don't-do-unicode |
| camp should be noted below. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| The FastEncodingBuffer is now used |
| by default instead of cStringIO or StringIO, |
| regardless of whether output_encoding |
| is set to None or not. FEB is faster than |
| both. Only StringIO allows bytestrings |
| of unknown encoding to pass right |
| through, however - while it is of course |
| not recommended to send bytestrings of unknown |
| encoding to the output stream, this |
| mode of usage can be re-enabled by |
| setting the flag bytestring_passthrough |
| to True. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| disable_unicode mode requires that |
| output_encoding be set to None - it also |
| forces the bytestring_passthrough flag |
| to True. |
| |
| .. change:: |
| :tags: |
| :tickets: 156 |
| |
| the <%namespace> tag raises an error |
| if the 'template' and 'module' attributes |
| are specified at the same time in |
| one tag. A different class is used |
| for each case which allows a reduction in |
| runtime conditional logic and function |
| call overhead. |
| |
| .. change:: |
| :tags: |
| :tickets: 159 |
| |
| the keys() in the Context, as well as |
| it's internal _data dictionary, now |
| include just what was specified to |
| render() as well as Mako builtins |
| 'caller', 'capture'. The contents |
| of __builtin__ are no longer copied. |
| Thanks to Daniel Lopez for pointing |
| this out. |
| |
| |
| .. changelog:: |
| :version: 0.3.6 |
| :released: Sat Nov 13 2010 |
| |
| .. change:: |
| :tags: |
| :tickets: 126 |
| |
| Documentation is on Sphinx. |
| |
| .. change:: |
| :tags: |
| :tickets: 154 |
| |
| Beaker is now part of "extras" in |
| setup.py instead of "install_requires". |
| This to produce a lighter weight install |
| for those who don't use the caching |
| as well as to conform to Pyramid |
| deployment practices. |
| |
| .. change:: |
| :tags: |
| :tickets: 153 |
| |
| The Beaker import (or attempt thereof) |
| is delayed until actually needed; |
| this to remove the performance penalty |
| from startup, particularly for |
| "single execution" environments |
| such as shell scripts. |
| |
| .. change:: |
| :tags: |
| :tickets: 155 |
| |
| Patch to lexer to not generate an empty |
| '' write in the case of backslash-ended |
| lines. |
| |
| .. change:: |
| :tags: |
| :tickets: 148 |
| |
| Fixed missing **extra collection in |
| setup.py which prevented setup.py |
| from running 2to3 on install. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| New flag on Template, TemplateLookup - |
| strict_undefined=True, will cause |
| variables not found in the context to |
| raise a NameError immediately, instead of |
| defaulting to the UNDEFINED value. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| The range of Python identifiers that |
| are considered "undefined", meaning they |
| are pulled from the context, has been |
| trimmed back to not include variables |
| declared inside of expressions (i.e. from |
| list comprehensions), as well as |
| in the argument list of lambdas. This |
| to better support the strict_undefined |
| feature. The change should be |
| fully backwards-compatible but involved |
| a little bit of tinkering in the AST code, |
| which hadn't really been touched for |
| a couple of years, just FYI. |
| |
| .. changelog:: |
| :version: 0.3.5 |
| :released: Sun Oct 24 2010 |
| |
| .. change:: |
| :tags: |
| :tickets: 141 |
| |
| The <%namespace> tag allows expressions |
| for the `file` argument, i.e. with ${}. |
| The `context` variable, if needed, |
| must be referenced explicitly. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| ${} expressions embedded in tags, |
| such as <%foo:bar x="${...}">, now |
| allow multiline Python expressions. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| Fixed previously non-covered regular |
| expression, such that using a ${} expression |
| inside of a tag element that doesn't allow |
| them raises a CompileException instead of |
| silently failing. |
| |
| .. change:: |
| :tags: |
| :tickets: 151 |
| |
| Added a try/except around "import markupsafe". |
| This to support GAE which can't run markupsafe. No idea whatsoever if the |
| install_requires in setup.py also breaks GAE, |
| couldn't get an answer on this. |
| |
| .. changelog:: |
| :version: 0.3.4 |
| :released: Tue Jun 22 2010 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| Now using MarkupSafe for HTML escaping, |
| i.e. in place of cgi.escape(). Faster |
| C-based implementation and also escapes |
| single quotes for additional security. |
| Supports the __html__ attribute for |
| the given expression as well. |
| |
| When using "disable_unicode" mode, |
| a pure Python HTML escaper function |
| is used which also quotes single quotes. |
| |
| Note that Pylons by default doesn't |
| use Mako's filter - check your |
| environment.py file. |
| |
| .. change:: |
| :tags: |
| :tickets: 137 |
| |
| Fixed call to "unicode.strip" in |
| exceptions.text_error_template which |
| is not Py3k compatible. |
| |
| .. changelog:: |
| :version: 0.3.3 |
| :released: Mon May 31 2010 |
| |
| .. change:: |
| :tags: |
| :tickets: 135 |
| |
| Added conditional to RichTraceback |
| such that if no traceback is passed |
| and sys.exc_info() has been reset, |
| the formatter just returns blank |
| for the "traceback" portion. |
| |
| .. change:: |
| :tags: |
| :tickets: 131 |
| |
| Fixed sometimes incorrect usage of |
| exc.__class__.__name__ |
| in html/text error templates when using |
| Python 2.4 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| Fixed broken @property decorator on |
| template.last_modified |
| |
| .. change:: |
| :tags: |
| :tickets: 132 |
| |
| Fixed error formatting when a stacktrace |
| line contains no line number, as in when |
| inside an eval/exec-generated function. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| When a .py is being created, the tempfile |
| where the source is stored temporarily is |
| now made in the same directory as that of |
| the .py file. This ensures that the two |
| files share the same filesystem, thus |
| avoiding cross-filesystem synchronization |
| issues. Thanks to Charles Cazabon. |
| |
| .. changelog:: |
| :version: 0.3.2 |
| :released: Thu Mar 11 2010 |
| |
| .. change:: |
| :tags: |
| :tickets: 116 |
| |
| Calling a def from the top, via |
| template.get_def(...).render() now checks the |
| argument signature the same way as it did in |
| 0.2.5, so that TypeError is not raised. |
| reopen of |
| |
| .. changelog:: |
| :version: 0.3.1 |
| :released: Sun Mar 7 2010 |
| |
| .. change:: |
| :tags: |
| :tickets: 129 |
| |
| Fixed incorrect dir name in setup.py |
| |
| .. changelog:: |
| :version: 0.3.0 |
| :released: Fri Mar 5 2010 |
| |
| .. change:: |
| :tags: |
| :tickets: 123 |
| |
| Python 2.3 support is dropped. |
| |
| .. change:: |
| :tags: |
| :tickets: 119 |
| |
| Python 3 support is added ! See README.py3k |
| for installation and testing notes. |
| |
| .. change:: |
| :tags: |
| :tickets: 127 |
| |
| Unit tests now run with nose. |
| |
| .. change:: |
| :tags: |
| :tickets: 99 |
| |
| Source code escaping has been simplified. |
| In particular, module source files are now |
| generated with the Python "magic encoding |
| comment", and source code is passed through |
| mostly unescaped, except for that code which |
| is regenerated from parsed Python source. |
| This fixes usage of unicode in |
| <%namespace:defname> tags. |
| |
| .. change:: |
| :tags: |
| :tickets: 122 |
| |
| RichTraceback(), html_error_template().render(), |
| text_error_template().render() now accept "error" |
| and "traceback" as optional arguments, and |
| these are now actually used. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| The exception output generated when |
| format_exceptions=True will now be as a Python |
| unicode if it occurred during render_unicode(), |
| or an encoded string if during render(). |
| |
| .. change:: |
| :tags: |
| :tickets: 112 |
| |
| A percent sign can be emitted as the first |
| non-whitespace character on a line by escaping |
| it as in "%%". |
| |
| .. change:: |
| :tags: |
| :tickets: 94 |
| |
| Template accepts empty control structure, i.e. |
| % if: %endif, etc. |
| |
| .. change:: |
| :tags: |
| :tickets: 116 |
| |
| The <%page args> tag can now be used in a base |
| inheriting template - the full set of render() |
| arguments are passed down through the inherits |
| chain. Undeclared arguments go into **pageargs |
| as usual. |
| |
| .. change:: |
| :tags: |
| :tickets: 109 |
| |
| defs declared within a <%namespace> section, an |
| uncommon feature, have been improved. The defs |
| no longer get doubly-rendered in the body() scope, |
| and now allow local variable assignment without |
| breakage. |
| |
| .. change:: |
| :tags: |
| :tickets: 128 |
| |
| Windows paths are handled correctly if a Template |
| is passed only an absolute filename (i.e. with c: |
| drive etc.) and no URI - the URI is converted |
| to a forward-slash path and module_directory |
| is treated as a windows path. |
| |
| .. change:: |
| :tags: |
| :tickets: 73 |
| |
| TemplateLookup raises TopLevelLookupException for |
| a given path that is a directory, not a filename, |
| instead of passing through to the template to |
| generate IOError. |
| |
| |
| .. changelog:: |
| :version: 0.2.6 |
| :released: |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| Fix mako function decorators to preserve the |
| original function's name in all cases. Patch |
| from Scott Torborg. |
| |
| .. change:: |
| :tags: |
| :tickets: 118 |
| |
| Support the <%namespacename:defname> syntax in |
| the babel extractor. |
| |
| .. change:: |
| :tags: |
| :tickets: 88 |
| |
| Further fixes to unicode handling of .py files with the |
| html_error_template. |
| |
| .. changelog:: |
| :version: 0.2.5 |
| :released: Mon Sep 7 2009 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| Added a "decorator" kw argument to <%def>, |
| allows custom decoration functions to wrap |
| rendering callables. Mainly intended for |
| custom caching algorithms, not sure what |
| other uses there may be (but there may be). |
| Examples are in the "filtering" docs. |
| |
| .. change:: |
| :tags: |
| :tickets: 101 |
| |
| When Mako creates subdirectories in which |
| to store templates, it uses the more |
| permissive mode of 0775 instead of 0750, |
| helping out with certain multi-process |
| scenarios. Note that the mode is always |
| subject to the restrictions of the existing |
| umask. |
| |
| .. change:: |
| :tags: |
| :tickets: 104 |
| |
| Fixed namespace.__getattr__() to raise |
| AttributeError on attribute not found |
| instead of RuntimeError. |
| |
| .. change:: |
| :tags: |
| :tickets: 97 |
| |
| Added last_modified accessor to Template, |
| returns the time.time() when the module |
| was created. |
| |
| .. change:: |
| :tags: |
| :tickets: 102 |
| |
| Fixed lexing support for whitespace |
| around '=' sign in defs. |
| |
| .. change:: |
| :tags: |
| :tickets: 108 |
| |
| Removed errant "lower()" in the lexer which |
| was causing tags to compile with |
| case-insensitive names, thus messing up |
| custom <%call> names. |
| |
| .. change:: |
| :tags: |
| :tickets: 110 |
| |
| added "mako.__version__" attribute to |
| the base module. |
| |
| .. changelog:: |
| :version: 0.2.4 |
| :released: Tue Dec 23 2008 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| Fixed compatibility with Jython 2.5b1. |
| |
| .. changelog:: |
| :version: 0.2.3 |
| :released: Sun Nov 23 2008 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| the <%namespacename:defname> syntax described at |
| http://techspot.zzzeek.org/?p=28 has now |
| been added as a built in syntax, and is recommended |
| as a more modern syntax versus <%call expr="expression">. |
| The %call tag itself will always remain, |
| with <%namespacename:defname> presenting a more HTML-like |
| alternative to calling defs, both plain and |
| nested. Many examples of the new syntax are in the |
| "Calling a def with embedded content" section |
| of the docs. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added support for Jython 2.5. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| cache module now uses Beaker's CacheManager |
| object directly, so that all cache types are included. |
| memcached is available as both "ext:memcached" and |
| "memcached", the latter for backwards compatibility. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added "cache" accessor to Template, Namespace. |
| e.g. ${local.cache.get('somekey')} or |
| template.cache.invalidate_body() |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added "cache_enabled=True" flag to Template, |
| TemplateLookup. Setting this to False causes cache |
| operations to "pass through" and execute every time; |
| this flag should be integrated in Pylons with its own |
| cache_enabled configuration setting. |
| |
| .. change:: |
| :tags: |
| :tickets: 92 |
| |
| the Cache object now supports invalidate_def(name), |
| invalidate_body(), invalidate_closure(name), |
| invalidate(key), which will remove the given key |
| from the cache, if it exists. The cache arguments |
| (i.e. storage type) are derived from whatever has |
| been already persisted for that template. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| For cache changes to work fully, Beaker 1.1 is required. |
| 1.0.1 and up will work as well with the exception of |
| cache expiry. Note that Beaker 1.1 is **required** |
| for applications which use dynamically generated keys, |
| since previous versions will permanently store state in memory |
| for each individual key, thus consuming all available |
| memory for an arbitrarily large number of distinct |
| keys. |
| |
| .. change:: |
| :tags: |
| :tickets: 93 |
| |
| fixed bug whereby an <%included> template with |
| <%page> args named the same as a __builtin__ would not |
| honor the default value specified in <%page> |
| |
| .. change:: |
| :tags: |
| :tickets: 88 |
| |
| fixed the html_error_template not handling tracebacks from |
| normal .py files with a magic encoding comment |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| RichTraceback() now accepts an optional traceback object |
| to be used in place of sys.exc_info()[2]. html_error_template() |
| and text_error_template() accept an optional |
| render()-time argument "traceback" which is passed to the |
| RichTraceback object. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added ModuleTemplate class, which allows the construction |
| of a Template given a Python module generated by a previous |
| Template. This allows Python modules alone to be used |
| as templates with no compilation step. Source code |
| and template source are optional but allow error reporting |
| to work correctly. |
| |
| .. change:: |
| :tags: |
| :tickets: 90 |
| |
| fixed Python 2.3 compat. in mako.pyparser |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fix Babel 0.9.3 compatibility; stripping comment tags is now |
| optional (and enabled by default). |
| |
| .. changelog:: |
| :version: 0.2.2 |
| :released: Mon Jun 23 2008 |
| |
| .. change:: |
| :tags: |
| :tickets: 87 |
| |
| cached blocks now use the current context when rendering |
| an expired section, instead of the original context |
| passed in |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fixed a critical issue regarding caching, whereby |
| a cached block would raise an error when called within a |
| cache-refresh operation that was initiated after the |
| initiating template had completed rendering. |
| |
| .. changelog:: |
| :version: 0.2.1 |
| :released: Mon Jun 16 2008 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fixed bug where 'output_encoding' parameter would prevent |
| render_unicode() from returning a unicode object. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| bumped magic number, which forces template recompile for |
| this version (fixes incompatible compile symbols from 0.1 |
| series). |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added a few docs for cache options, specifically those that |
| help with memcached. |
| |
| .. changelog:: |
| :version: 0.2.0 |
| :released: Tue Jun 3 2008 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| Speed improvements (as though we needed them, but people |
| contributed and there you go): |
| |
| .. change:: |
| :tags: |
| :tickets: 77 |
| |
| added "bytestring passthru" mode, via |
| `disable_unicode=True` argument passed to Template or |
| TemplateLookup. All unicode-awareness and filtering is |
| turned off, and template modules are generated with |
| the appropriate magic encoding comment. In this mode, |
| template expressions can only receive raw bytestrings |
| or Unicode objects which represent straight ASCII, and |
| render_unicode() may not be used if multibyte |
| characters are present. When enabled, speed |
| improvement around 10-20%. (courtesy |
| anonymous guest) |
| |
| .. change:: |
| :tags: |
| :tickets: 76 |
| |
| inlined the "write" function of Context into a local |
| template variable. This affords a 12-30% speedup in |
| template render time. (idea courtesy same anonymous |
| guest) |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| New Features, API changes: |
| |
| .. change:: |
| :tags: |
| :tickets: 62 |
| |
| added "attr" accessor to namespaces. Returns |
| attributes configured as module level attributes, i.e. |
| within <%! %> sections. i.e.: |
| |
| # somefile.html |
| <%! |
| foo = 27 |
| %> |
| |
| # some other template |
| <%namespace name="myns" file="somefile.html"/> |
| ${myns.attr.foo} |
| |
| The slight backwards incompatibility here is, you |
| can't have namespace defs named "attr" since the |
| "attr" descriptor will occlude it. |
| |
| .. change:: |
| :tags: |
| :tickets: 78 |
| |
| cache_key argument can now render arguments passed |
| directly to the %page or %def, i.e. <%def |
| name="foo(x)" cached="True" cache_key="${x}"/> |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| some functions on Context are now private: |
| _push_buffer(), _pop_buffer(), |
| caller_stack._push_frame(), caller_stack._pop_frame(). |
| |
| .. change:: |
| :tags: |
| :tickets: 56, 81 |
| |
| added a runner script "mako-render" which renders |
| standard input as a template to stdout |
| |
| .. change:: |
| :tags: bugfixes |
| :tickets: 83, 84 |
| |
| can now use most names from __builtins__ as variable |
| names without explicit declaration (i.e. 'id', |
| 'exception', 'range', etc.) |
| |
| .. change:: |
| :tags: bugfixes |
| :tickets: 84 |
| |
| can also use builtin names as local variable names |
| (i.e. dict, locals) (came from fix for) |
| |
| .. change:: |
| :tags: bugfixes |
| :tickets: 68 |
| |
| fixed bug in python generation when variable names are |
| used with identifiers like "else", "finally", etc. |
| inside them |
| |
| .. change:: |
| :tags: bugfixes |
| :tickets: 69 |
| |
| fixed codegen bug which occured when using <%page> |
| level caching, combined with an expression-based |
| cache_key, combined with the usage of <%namespace |
| import="*"/> - fixed lexer exceptions not cleaning up |
| temporary files, which could lead to a maximum number |
| of file descriptors used in the process |
| |
| .. change:: |
| :tags: bugfixes |
| :tickets: 71 |
| |
| fixed issue with inline format_exceptions that was |
| producing blank exception pages when an inheriting |
| template is present |
| |
| .. change:: |
| :tags: bugfixes |
| :tickets: |
| |
| format_exceptions will apply the encoding options of |
| html_error_template() to the buffered output |
| |
| .. change:: |
| :tags: bugfixes |
| :tickets: 75 |
| |
| rewrote the "whitespace adjuster" function to work |
| with more elaborate combinations of quotes and |
| comments |
| |
| |
| .. changelog:: |
| :version: 0.1.10 |
| :released: |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fixed propagation of 'caller' such that nested %def calls |
| within a <%call> tag's argument list propigates 'caller' |
| to the %call function itself (propigates to the inner |
| calls too, this is a slight side effect which previously |
| existed anyway) |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fixed bug where local.get_namespace() could put an |
| incorrect "self" in the current context |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fixed another namespace bug where the namespace functions |
| did not have access to the correct context containing |
| their 'self' and 'parent' |
| |
| .. changelog:: |
| :version: 0.1.9 |
| :released: |
| |
| .. change:: |
| :tags: |
| :tickets: 47 |
| |
| filters.Decode filter can also accept a non-basestring |
| object and will call str() + unicode() on it |
| |
| .. change:: |
| :tags: |
| :tickets: 53 |
| |
| comments can be placed at the end of control lines, |
| i.e. if foo: # a comment,, thanks to |
| Paul Colomiets |
| |
| .. change:: |
| :tags: |
| :tickets: 16 |
| |
| fixed expressions and page tag arguments and with embedded |
| newlines in CRLF templates, follow up to, thanks |
| Eric Woroshow |
| |
| .. change:: |
| :tags: |
| :tickets: 51 |
| |
| added an IOError catch for source file not found in RichTraceback |
| exception reporter |
| |
| .. changelog:: |
| :version: 0.1.8 |
| :released: Tue Jun 26 2007 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| variable names declared in render methods by internal |
| codegen prefixed by "__M_" to prevent name collisions |
| with user code |
| |
| .. change:: |
| :tags: |
| :tickets: 45 |
| |
| added a Babel (http://babel.edgewall.org/) extractor entry |
| point, allowing extraction of gettext messages directly from |
| mako templates via Babel |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fix to turbogears plugin to work with dot-separated names |
| (i.e. load_template('foo.bar')). also takes file extension |
| as a keyword argument (default is 'mak'). |
| |
| .. change:: |
| :tags: |
| :tickets: 35 |
| |
| more tg fix: fixed, allowing string-based |
| templates with tgplugin even if non-compatible args were sent |
| |
| .. changelog:: |
| :version: 0.1.7 |
| :released: Wed Jun 13 2007 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| one small fix to the unit tests to support python 2.3 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| a slight hack to how cache.py detects Beaker's memcached, |
| works around unexplained import behavior observed on some |
| python 2.3 installations |
| |
| .. changelog:: |
| :version: 0.1.6 |
| :released: Fri May 18 2007 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| caching is now supplied directly by Beaker, which has |
| all of MyghtyUtils merged into it now. The latest Beaker |
| (0.7.1) also fixes a bug related to how Mako was using the |
| cache API. |
| |
| .. change:: |
| :tags: |
| :tickets: 34 |
| |
| fix to module_directory path generation when the path is "./" |
| |
| .. change:: |
| :tags: |
| :tickets: 35 |
| |
| TGPlugin passes options to string-based templates |
| |
| .. change:: |
| :tags: |
| :tickets: 28 |
| |
| added an explicit stack frame step to template runtime, which |
| allows much simpler and hopefully bug-free tracking of 'caller', |
| fixes |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| if plain Python defs are used with <%call>, a decorator |
| @runtime.supports_callable exists to ensure that the "caller" |
| stack is properly handled for the def. |
| |
| .. change:: |
| :tags: |
| :tickets: 37 |
| |
| fix to RichTraceback and exception reporting to get template |
| source code as a unicode object |
| |
| .. change:: |
| :tags: |
| :tickets: 39 |
| |
| html_error_template includes options "full=True", "css=True" |
| which control generation of HTML tags, CSS |
| |
| .. change:: |
| :tags: |
| :tickets: 40 |
| |
| added the 'encoding_errors' parameter to Template/TemplateLookup |
| for specifying the error handler associated with encoding to |
| 'output_encoding' |
| |
| .. change:: |
| :tags: |
| :tickets: 37 |
| |
| the Template returned by html_error_template now defaults to |
| output_encoding=sys.getdefaultencoding(), |
| encoding_errors='htmlentityreplace' |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| control lines, i.e. % lines, support backslashes to continue long |
| lines (#32) |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fixed codegen bug when defining <%def> within <%call> within <%call> |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| leading utf-8 BOM in template files is honored according to pep-0263 |
| |
| .. changelog:: |
| :version: 0.1.5 |
| :released: Sat Mar 31 2007 |
| |
| .. change:: |
| :tags: |
| :tickets: 26 |
| |
| AST expression generation - added in just about everything |
| expression-wise from the AST module |
| |
| .. change:: |
| :tags: |
| :tickets: 27 |
| |
| AST parsing, properly detects imports of the form "import foo.bar" |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fix to lexing of <%docs> tag nested in other tags |
| |
| .. change:: |
| :tags: |
| :tickets: 29 |
| |
| fix to context-arguments inside of <%include> tag which broke |
| during 0.1.4 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added "n" filter, disables *all* filters normally applied to an expression |
| via <%page> or default_filters (but not those within the filter) |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added buffer_filters argument, defines filters applied to the return value |
| of buffered/cached/filtered %defs, after all filters defined with the %def |
| itself have been applied. allows the creation of default expression filters |
| that let the output of return-valued %defs "opt out" of that filtering |
| via passing special attributes or objects. |
| |
| .. changelog:: |
| :version: 0.1.4 |
| :released: Sat Mar 10 2007 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| got defs-within-defs to be cacheable |
| |
| .. change:: |
| :tags: |
| :tickets: 23 |
| |
| fixes to code parsing/whitespace adjusting where plain python comments |
| may contain quote characters |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fix to variable scoping for identifiers only referenced within |
| functions |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added a path normalization step to lookup so URIs like |
| "/foo/bar/../etc/../foo" pre-process the ".." tokens before checking |
| the filesystem |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fixed/improved "caller" semantics so that undefined caller is |
| "UNDEFINED", propigates __nonzero__ method so it evaulates to False if |
| not present, True otherwise. this way you can say % if caller:\n |
| ${caller.body()}\n% endif |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| <%include> has an "args" attribute that can pass arguments to the |
| called template (keyword arguments only, must be declared in that |
| page's <%page> tag.) |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| <%include> plus arguments is also programmatically available via |
| self.include_file(<filename>, **kwargs) |
| |
| .. change:: |
| :tags: |
| :tickets: 24 |
| |
| further escaping added for multibyte expressions in %def, %call |
| attributes |
| |
| .. changelog:: |
| :version: 0.1.3 |
| :released: Wed Feb 21 2007 |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| ***Small Syntax Change*** - the single line comment character is now |
| *two* hash signs, i.e. "## this is a comment". This avoids a common |
| collection with CSS selectors. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| the magic "coding" comment (i.e. # coding:utf-8) will still work with |
| either one "#" sign or two for now; two is preferred going forward, i.e. |
| ## coding:<someencoding>. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| new multiline comment form: "<%doc> a comment </%doc>" |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| UNDEFINED evaluates to False |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| improvement to scoping of "caller" variable when using <%call> tag |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added lexer error for unclosed control-line (%) line |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added "preprocessor" argument to Template, TemplateLookup - is a single |
| callable or list of callables which will be applied to the template text |
| before lexing. given the text as an argument, returns the new text. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added mako.ext.preprocessors package, contains one preprocessor so far: |
| 'convert_comments', which will convert single # comments to the new ## |
| format |
| |
| .. changelog:: |
| :version: 0.1.2 |
| :released: Thu Feb 1 2007 |
| |
| .. change:: |
| :tags: |
| :tickets: 11 |
| |
| fix to parsing of code/expression blocks to insure that non-ascii |
| characters, combined with a template that indicates a non-standard |
| encoding, are expanded into backslash-escaped glyphs before being AST |
| parsed |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| all template lexing converts the template to unicode first, to |
| immediately catch any encoding issues and ensure internal unicode |
| representation. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added module_filename argument to Template to allow specification of a |
| specific module file |
| |
| .. change:: |
| :tags: |
| :tickets: 14 |
| |
| added modulename_callable to TemplateLookup to allow a function to |
| determine module filenames (takes filename, uri arguments). used for |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added optional input_encoding flag to Template, to allow sending a |
| unicode() object with no magic encoding comment |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| "expression_filter" argument in <%page> applies only to expressions |
| |
| .. change:: |
| :tags: "unicode" |
| :tickets: |
| |
| added "default_filters" argument to Template, TemplateLookup. applies only |
| to expressions, gets prepended to "expression_filter" arg from <%page>. |
| defaults to, so that all expressions get stringified into u'' |
| by default (this is what Mako already does). By setting to [], expressions |
| are passed through raw. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| added "imports" argument to Template, TemplateLookup. so you can predefine |
| a list of import statements at the top of the template. can be used in |
| conjunction with default_filters. |
| |
| .. change:: |
| :tags: |
| :tickets: 16 |
| |
| support for CRLF templates...whoops ! welcome to all the windows users. |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| small fix to local variable propigation for locals that are conditionally |
| declared |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| got "top level" def calls to work, i.e. template.get_def("somedef").render() |
| |
| .. changelog:: |
| :version: 0.1.1 |
| :released: Sun Jan 14 2007 |
| |
| .. change:: |
| :tags: |
| :tickets: 8 |
| |
| buffet plugin supports string-based templates, allows ToscaWidgets to work |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| AST parsing fixes: fixed TryExcept identifier parsing |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| removed textmate tmbundle from contrib and into separate SVN location; |
| windows users cant handle those files, setuptools not very good at |
| "pruning" certain directories |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fix so that "cache_timeout" parameter is propigated |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fix to expression filters so that string conversion (actually unicode) |
| properly occurs before filtering |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| better error message when a lookup is attempted with a template that has no |
| lookup |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| implemented "module" attribute for namespace |
| |
| .. change:: |
| :tags: |
| :tickets: |
| |
| fix to code generation to correctly track multiple defs with the same name |
| |
| .. change:: |
| :tags: |
| :tickets: 9 |
| |
| "directories" can be passed to TemplateLookup as a scalar in which case it |
| gets converted to a list |