Skip to content

Releases: sqlalchemy/mako

0.7.0

02 Sep 18:49
Compare
Choose a tag to compare

0.7.0

Released: Fri Mar 30 2012

  • [feature] 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

    References: #125

  • [feature] 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".

  • [feature] The html_error_template() will now
    apply Pygments highlighting to the source
    code displayed in the traceback, if Pygments
    if available. Courtesy Ben Trofatter

    References: #95

  • [feature] Added support for context managers,
    i.e. "% with x as e:/ % endwith" support.
    Courtesy Ben Trofatter

    References: #147

  • [feature] 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.

    References: #185

  • [bug] Fixed some Py3K resource warnings due
    to filehandles being implicitly closed.

    References: #182

  • [bug] Fixed endless recursion bug when
    nesting multiple def-calls with content.
    Thanks to Jeff Dairiki.

    References: #186

  • [feature] Added Jinja2 to the example
    benchmark suite, courtesy Vincent Férotin

0.6.2

02 Sep 18:49
Compare
Choose a tag to compare

0.6.2

Released: Thu Feb 2 2012

  • [bug] The ${{"foo":"bar"}} parsing issue is fixed!!
    The legendary Eevee has slain the dragon!. Also fixes quoting issue
    at.

    References: #20, #86

0.6.1

02 Sep 18:49
Compare
Choose a tag to compare

0.6.1

Released: Sat Jan 28 2012

  • [bug] 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.

0.6.0

02 Sep 18:49
Compare
Choose a tag to compare

0.6.0

Released: Sat Jan 21 2012

  • [feature] 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.

  • [feature] 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.

  • [feature] The 'put' method on Cache is now
    'set'. 'put' is there for backwards compatibility.

  • [feature] 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.

  • [feature] 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':, 'type':'memcached',
    'timeout':50, 'dir':'/path/to/some/directory'}

  • [feature/bug] 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)

    References: #180

  • [feature] Added "--var name=value" option to the mako-render
    script, allows passing of kw to the template from
    the command line.

    References: #178

  • [feature] 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.

    References: #181

  • [bug] The exception message in the html_error_template
    is now escaped with the HTML filter.

    References: #142

  • [bug] Added "white-space:pre" style to html_error_template()
    for code blocks so that indentation is preserved

    References: #173

  • [bug] The "benchmark" example is now Python 3 compatible
    (even though several of those old template libs aren't
    available on Py3K, so YMMV)

    References: #175

0.5.0

02 Sep 18:49
Compare
Choose a tag to compare

0.5.0

Released: Wed Sep 28 2011

  • 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.

    References: #174

0.4.2

02 Sep 18:49
Compare
Choose a tag to compare

0.4.2

Released: Fri Aug 5 2011

  • 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.

    References: #170

  • Fixed the babel plugin to accommodate <%block>

    References: #169

0.4.1

02 Sep 18:49
Compare
Choose a tag to compare

0.4.1

Released: Wed Apr 6 2011

  • 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.

    References: #164

  • a slight adjustment to the "highlight" logic
    for generating template bound stacktraces.
    Will stick to known template source lines
    without any extra guessing.

    References: #165

0.4.0

02 Sep 18:49
Compare
Choose a tag to compare

0.4.0

Released: Sun Mar 6 2011

  • 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.

  • 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.

  • disable_unicode mode requires that
    output_encoding be set to None - it also
    forces the bytestring_passthrough flag
    to True.

  • 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.

    References: #156

  • 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.

    References: #159

0.3.6

02 Sep 18:49
Compare
Choose a tag to compare

0.3.6

Released: Sat Nov 13 2010

  • Documentation is on Sphinx.

    References: #126

  • 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.

    References: #154

  • 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.

    References: #153

  • Patch to lexer to not generate an empty
    '' write in the case of backslash-ended
    lines.

    References: #155

  • Fixed missing **extra collection in
    setup.py which prevented setup.py
    from running 2to3 on install.

    References: #148

  • 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.

  • 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.

0.3.5

02 Sep 18:49
Compare
Choose a tag to compare

0.3.5

Released: Sun Oct 24 2010

  • The <%namespace> tag allows expressions
    for the file argument, i.e. with ${}.
    The context variable, if needed,
    must be referenced explicitly.

    References: #141

  • ${} expressions embedded in tags,
    such as <%foo:bar x="${...}">, now
    allow multiline Python expressions.

  • 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.

  • 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.

    References: #151