diff --git a/.gitignore b/.gitignore
index e2799a5..267bfc2 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
-build/
-doc/build/output
+/build
+/doc/build/output
 *.pyc
 *.orig
 *.egg-info
diff --git a/CHANGES b/CHANGES
index 6538fe6..f942ad9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,946 +1,15 @@
-0.9.2
-- [bug] 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 #2 courtesy Derek Harland.
+=====
+MOVED
+=====
 
-0.9.1
-- [bug] Fixed bug in Babel plugin where translator comments
-  would be lost if intervening text nodes were encountered.
-  Fix courtesy Ned Batchelder.  [ticket:225]
+Please see:
 
-- [bug] Fixed TGPlugin.render method to support unicode template
-  names in Py2K - courtesy Vladimir Magamedov.
+    /docs/changelog.html
 
-- [bug] Fixed an AST issue that was preventing correct operation
-  under alpha versions of Python 3.4.  Pullreq courtesy Zer0-.
+    /docs/build/changelog.rst
 
-- [bug] 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.
+or
 
-- [bug] Fixed issue where an old lexer rule prevented a template line
-  which looked like "#*" from being correctly parsed.  [ticket:224]
+    https://docs.makotemplates.org/en/latest/changelog.html
 
-0.9.0
-- [bug] 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().
-  [ticket:219]
-
-- [bug] 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.
-
-- [bug] The Babel plugin has been repaired to work on Python 3.
-  [ticket:187]
-
-- [bug] Using <%namespace import="*" module="somemodule"/> now
-  skips over module elements that are not explcitly callable,
-  avoiding TypeError when trying to produce partials.
-  [ticket:207]
-
-- [bug] Fixed Py3K bug where a "lambda" expression was not
-  interpreted correctly within a template tag; also
-  fixed in Py2.4.  [ticket:190]
-
-0.8.1
-- [bug] 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. [ticket:216]
-
-- [bug] Fixed regression where "entity" filter wasn't
-  converted for py3k properly (added tests.)
-  [ticket:214]
-
-- [bug] Fixed bug where mako-render script wasn't
-  compatible with Py3k.  [ticket:212]
-
-- [bug] Cleaned up all the various deprecation/
-  file warnings when running the tests under
-  various Pythons with warnings turned on.
-  [ticket:213]
-
-0.8.0
-- [feature] Performance improvement to the
-  "legacy" HTML escape feature, used for XML
-  escaping and when markupsafe isn't present,
-  courtesy George Xie.
-
-- [bug] 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. [ticket:209]
-
-- [bug] Change default for compile()->reserved_names
-  from tuple to frozenset, as this is expected to be
-  a set by default.  [ticket:208]
-
-- [feature] Code has been reworked to support Python 2.4->
-  Python 3.xx in place.  2to3 no longer needed.
-
-- [feature] Added lexer_cls argument to Template,
-  TemplateLookup, allows alternate Lexer classes
-  to be used.
-
-- [feature] 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.3
-- [bug] 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.
-
-- [bug] AST supporting now supports tuple-packed
-  function arguments inside pure-python def
-  or lambda expressions.  [ticket:201]
-
-- [bug] Fixed Py3K bug in the Babel extension.
-
-- [bug] 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>.
-
-- [bug] Fixed bug in plugin loader to correctly
-  raise exception when non-existent plugin
-  is specified.
-
-0.7.2
-- [bug] Fixed regression in 0.7.1 where AST
-  parsing for Py2.4 was broken.
-  [ticket:193]
-
-0.7.1
-- [feature] Control lines with no bodies will
-  now succeed, as "pass" is added for these
-  when no statements are otherwise present.
-  Courtesy Ben Trofatter [ticket:146]
-
-- [bug] 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.
-  [ticket:192]
-
-- [bug] Can now use strict_undefined at the
-  same time args passed to def() are used
-  by other elements of the <%def> tag.
-  [ticket:191]
-
-0.7.0
-- [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 [ticket: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
-  [ticket:95]
-
-- [feature] Added support for context managers,
-  i.e. "% with x as e:/ % endwith" support.
-  Courtesy Ben Trofatter [ticket: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.
-  [ticket:185]
-
-- [bug] Fixed some Py3K resource warnings due
-  to filehandles being implicitly closed.
-  [ticket:182]
-
-- [bug] Fixed endless recursion bug when
-  nesting multiple def-calls with content.
-  Thanks to Jeff Dairiki. [ticket:186]
-
-- [feature] Added Jinja2 to the example
-  benchmark suite, courtesy Vincent Férotin
-
-0.6.2
-- [bug] The ${{"foo":"bar"}} parsing issue is fixed!!
-  The legendary Eevee has slain the dragon!
-  [ticket:20].  Also fixes quoting issue
-  at [ticket:86].
-
-0.6.1
-- [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
-
-- [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':<some 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)
-  [ticket:180]
-
-- [feature] Added "--var name=value" option to the mako-render
-  script, allows passing of kw to the template from
-  the command line. [ticket: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.  [ticket:181]
-
-- [bug] The exception message in the html_error_template
-  is now escaped with the HTML filter. [ticket:142]
-
-- [bug] Added "white-space:pre" style to html_error_template()
-  for code blocks so that indentation is preserved
-  [ticket: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) [ticket:175]
-
-0.5
-- 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.
-  [ticket:174]
-
-0.4.2
-- 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.
-  [ticket:170]
-
-- Fixed the babel plugin to accommodate <%block>
-  [ticket:169]
-
-0.4.1
-- 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. [ticket:164]
-
-- a slight adjustment to the "highlight" logic
-  for generating template bound stacktraces.
-  Will stick to known template source lines
-  without any extra guessing. [ticket:165]
-
-0.4.0
-- 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. [ticket: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. [ticket:159]
-
-0.3.6
-- Documentation is on Sphinx.
-  [ticket: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.  [ticket: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. [ticket:153]
-
-- Patch to lexer to not generate an empty
-  '' write in the case of backslash-ended
-  lines.  [ticket:155]
-
-- Fixed missing **extra collection in
-  setup.py which prevented setup.py
-  from running 2to3 on install.
-  [ticket: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
-- The <%namespace> tag allows expressions
-  for the `file` argument, i.e. with ${}.
-  The `context` variable, if needed,
-  must be referenced explicitly.
-  [ticket: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.
-  [ticket:151] No idea whatsoever if the
-  install_requires in setup.py also breaks GAE,
-  couldn't get an answer on this.
-
-0.3.4
-- 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.
-
-- Fixed call to "unicode.strip" in
-  exceptions.text_error_template which
-  is not Py3k compatible.  [ticket:137]
-
-0.3.3
-- 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.
-  [ticket:135]
-
-- Fixed sometimes incorrect usage of
-  exc.__class__.__name__
-  in html/text error templates when using
-  Python 2.4 [ticket:131]
-
-- Fixed broken @property decorator on
-  template.last_modified
-
-- Fixed error formatting when a stacktrace
-  line contains no line number, as in when
-  inside an eval/exec-generated function.
-  [ticket:132]
-
-- 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.
-
-0.3.2
-- 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 [ticket:116]
-
-
-0.3.1
-- Fixed incorrect dir name in setup.py
-  [ticket:129]
-
-0.3
-- Python 2.3 support is dropped. [ticket:123]
-
-- Python 3 support is added ! See README.py3k
-  for installation and testing notes.
-  [ticket:119]
-
-- Unit tests now run with nose.  [ticket:127]
-
-- 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.  [ticket:99]
-
-- RichTraceback(), html_error_template().render(),
-  text_error_template().render() now accept "error"
-  and "traceback" as optional arguments, and
-  these are now actually used.  [ticket:122]
-
-- 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().
-
-- A percent sign can be emitted as the first
-  non-whitespace character on a line by escaping
-  it as in "%%". [ticket:112]
-
-- Template accepts empty control structure, i.e.
-  % if: %endif, etc. [ticket:94]
-
-- 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.  [ticket:116]
-
-- 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.  [ticket:109]
-
-- 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.  [ticket:128]
-
-- TemplateLookup raises TopLevelLookupException for
-  a given path that is a directory, not a filename,
-  instead of passing through to the template to
-  generate IOError.  [ticket:73]
-
-0.2.6
-
-- Fix mako function decorators to preserve the
-  original function's name in all cases. Patch
-  from Scott Torborg.
-
-- Support the <%namespacename:defname> syntax in
-  the babel extractor. [ticket:118]
-
-- Further fixes to unicode handling of .py files with the
-  html_error_template. [ticket:88]
-
-0.2.5
-- 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.
-
-- 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. [ticket:101]
-
-- Fixed namespace.__getattr__() to raise
-  AttributeError on attribute not found
-  instead of RuntimeError.  [ticket:104]
-
-- Added last_modified accessor to Template,
-  returns the time.time() when the module
-  was created. [ticket:97]
-
-- Fixed lexing support for whitespace
-  around '=' sign in defs. [ticket:102]
-
-- Removed errant "lower()" in the lexer which
-  was causing tags to compile with
-  case-insensitive names, thus messing up
-  custom <%call> names. [ticket:108]
-
-- added "mako.__version__" attribute to
-  the base module.  [ticket:110]
-
-0.2.4
-- Fixed compatibility with Jython 2.5b1.
-
-0.2.3
-- 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.
-
-- added support for Jython 2.5.
-
-- 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.
-
-- added "cache" accessor to Template, Namespace.
-  e.g.  ${local.cache.get('somekey')} or
-  template.cache.invalidate_body()
-
-- 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.
-
-- 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.
-  [ticket:92]
-
-- 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.
-
-- fixed bug whereby an <%included> template with
-  <%page> args named the same as a __builtin__ would not
-  honor the default value specified in <%page> [ticket:93]
-
-- fixed the html_error_template not handling tracebacks from
-  normal .py files with a magic encoding comment [ticket:88]
-
-- 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.
-
-- 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.
-
-- fixed Python 2.3 compat. in mako.pyparser [ticket:90]
-
-- fix Babel 0.9.3 compatibility; stripping comment tags is now
-  optional (and enabled by default).
-
-
-0.2.2
-- cached blocks now use the current context when rendering
-an expired section, instead of the original context
-passed in [ticket:87]
-- 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.
-
-0.2.1
-- fixed bug where 'output_encoding' parameter would prevent
-render_unicode() from returning a unicode object.
-- bumped magic number, which forces template recompile for
-this version (fixes incompatible compile symbols from 0.1
-series).
-- added a few docs for cache options, specifically those that
-help with memcached.
-
-0.2.0
-- Speed improvements (as though we needed them, but people
-  contributed and there you go):
-
-  - 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%. [ticket:77] (courtesy
-    anonymous guest)
-
-  - 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) [ticket:76]
-
-- New Features, API changes:
-
-  - added "attr" accessor to namespaces. Returns
-    attributes configured as module level attributes, i.e.
-    within <%! %> sections.  [ticket:62] 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.
-
-  - 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}"/>
-    [ticket:78]
-
-  - some functions on Context are now private:
-    _push_buffer(), _pop_buffer(),
-    caller_stack._push_frame(), caller_stack._pop_frame().
-
-  - added a runner script "mako-render" which renders
-    standard input as a template to stdout [ticket:81]
-    [ticket:56]
-
-- Bugfixes:
-  - can now use most names from __builtins__ as variable
-    names without explicit declaration (i.e. 'id',
-    'exception', 'range', etc.) [ticket:83] [ticket:84]
-
-  - can also use builtin names as local variable names
-    (i.e. dict, locals) (came from fix for [ticket:84])
-
-  - fixed bug in python generation when variable names are
-    used with identifiers like "else", "finally", etc.
-    inside them [ticket:68]
-
-  - 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 [ticket:69]
-
-  - fixed issue with inline format_exceptions that was
-    producing blank exception pages when an inheriting
-    template is present [ticket:71]
-
-  - format_exceptions will apply the encoding options of
-    html_error_template() to the buffered output
-
-  - rewrote the "whitespace adjuster" function to work
-    with more elaborate combinations of quotes and
-    comments [ticket:75]
-
-0.1.10
-- 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)
-- fixed bug where local.get_namespace() could put an
-  incorrect "self" in the current context
-- fixed another namespace bug where the namespace functions
-  did not have access to the correct context containing
-  their 'self' and 'parent'
-
-0.1.9
-- filters.Decode filter can also accept a non-basestring
-object and will call str() + unicode() on it [ticket:47]
-- comments can be placed at the end of control lines,
-i.e. if foo: # a comment, [ticket:53], thanks to
-Paul Colomiets
-- fixed expressions and page tag arguments and with embedded
-newlines in CRLF templates, follow up to [ticket:16], thanks
-Eric Woroshow
-- added an IOError catch for source file not found in RichTraceback
-exception reporter [ticket:51]
-
-0.1.8
-- variable names declared in render methods by internal
-codegen prefixed by "__M_" to prevent name collisions
-with user code
-- added a Babel (http://babel.edgewall.org/) extractor entry
-point, allowing extraction of gettext messages directly from
-mako templates via Babel [ticket:45]
-- 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').
-- more tg fix:  fixed [ticket:35], allowing string-based
-templates with tgplugin even if non-compatible args were sent
-
-0.1.7
-- one small fix to the unit tests to support python 2.3
-- a slight hack to how cache.py detects Beaker's memcached,
-works around unexplained import behavior observed on some
-python 2.3 installations
-
-0.1.6
-- 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.
-- fix to module_directory path generation when the path is "./"
-  [ticket:34]
-- TGPlugin passes options to string-based templates [ticket:35]
-- added an explicit stack frame step to template runtime, which
-  allows much simpler and hopefully bug-free tracking of 'caller',
-  fixes #28
-- 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.
-- fix to RichTraceback and exception reporting to get template
-  source code as a unicode object #37
-- html_error_template includes options "full=True", "css=True"
-  which control generation of HTML tags, CSS [ticket:39]
-- added the 'encoding_errors' parameter to Template/TemplateLookup
-  for specifying the error handler associated with encoding to
-  'output_encoding' [ticket:40]
-- the Template returned by html_error_template now defaults to
-  output_encoding=sys.getdefaultencoding(),
-  encoding_errors='htmlentityreplace' [ticket:37]
-- control lines, i.e. % lines, support backslashes to continue long
-  lines (#32)
-- fixed codegen bug when defining <%def> within <%call> within <%call>
-- leading utf-8 BOM in template files is honored according to pep-0263
-
-0.1.5
-- AST expression generation - added in just about everything
-  expression-wise from the AST module  [ticket:26]
-- AST parsing, properly detects imports of the form "import foo.bar"
-  [ticket:27]
-- fix to lexing of <%docs> tag nested in other tags
-- fix to context-arguments inside of <%include> tag which broke
-during 0.1.4 [ticket:29]
-- added "n" filter, disables *all* filters normally applied to an expression
-via <%page> or default_filters (but not those within the filter)
-- 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.
-
-0.1.4
-- got defs-within-defs to be cacheable
-- fixes to code parsing/whitespace adjusting where plain python comments
-  may contain quote characters [ticket:23]
-- fix to variable scoping for identifiers only referenced within
-  functions
-- added a path normalization step to lookup so URIs like
-  "/foo/bar/../etc/../foo" pre-process the ".." tokens before checking
-  the filesystem
-- 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
-- <%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.)
-- <%include> plus arguments is also programmatically available via
-  self.include_file(<filename>, **kwargs)
-- further escaping added for multibyte expressions in %def, %call
-  attributes [ticket:24]
-
-
-0.1.3
-- ***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.
-- 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>.
-- new multiline comment form: "<%doc> a comment </%doc>"
-- UNDEFINED evaluates to False
-- improvement to scoping of "caller" variable when using <%call> tag
-- added lexer error for unclosed control-line (%) line
-- 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.
-- added mako.ext.preprocessors package, contains one preprocessor so far:
-  'convert_comments', which will convert single # comments to the new ##
-  format
-
-0.1.2
-- 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 [ticket:11]
-- all template lexing converts the template to unicode first, to
-  immediately catch any encoding issues and ensure internal unicode
-  representation.
-- added module_filename argument to Template to allow specification of a
-  specific module file
-- added modulename_callable to TemplateLookup to allow a function to
-  determine module filenames (takes filename, uri arguments). used for
-  [ticket:14]
-- added optional input_encoding flag to Template, to allow sending a
-  unicode() object with no magic encoding comment
-- "expression_filter" argument in <%page> applies only to expressions
-- added "default_filters" argument to Template, TemplateLookup. applies only
-  to expressions, gets prepended to "expression_filter" arg from <%page>.
-  defaults to ["unicode"], so that all expressions get stringified into u''
-  by default (this is what Mako already does). By setting to [], expressions
-  are passed through raw.
-- 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.
-- support for CRLF templates...whoops ! welcome to all the windows users.
-  [ticket:16]
-- small fix to local variable propigation for locals that are conditionally
-  declared
-- got "top level" def calls to work, i.e. template.get_def("somedef").render()
-
-0.1.1
-- buffet plugin supports string-based templates, allows ToscaWidgets to work
-  [ticket:8]
-- AST parsing fixes: fixed TryExcept identifier parsing
-- removed textmate tmbundle from contrib and into separate SVN location;
-  windows users cant handle those files, setuptools not very good at
-  "pruning" certain directories
-- fix so that "cache_timeout" parameter is propigated
-- fix to expression filters so that string conversion (actually unicode)
-  properly occurs before filtering
-- better error message when a lookup is attempted with a template that has no
-  lookup
-- implemented "module" attribute for namespace
-- fix to code generation to correctly track multiple defs with the same name
-- "directories" can be passed to TemplateLookup as a scalar in which case it
-  gets converted to a list [ticket:9]
-
-0.1.0
-
-Initial release.
+for the current CHANGES.
diff --git a/LICENSE b/LICENSE
index 38a3124..4a62c62 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 This is the MIT license: http://www.opensource.org/licenses/mit-license.php
 
-Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>.
+Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>.
 Mako is a trademark of Michael Bayer.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this
diff --git a/doc/build/changelog.rst b/doc/build/changelog.rst
new file mode 100644
index 0000000..5c890cf
--- /dev/null
+++ b/doc/build/changelog.rst
@@ -0,0 +1,1911 @@
+=========
+Changelog
+=========
+
+.. changelog::
+    :version: 0.9.2
+    :released:
+
+    .. change::
+        :tags: bug
+        :tickets: 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.
+
+.. 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:
+
+    .. 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.
+
+
+.. 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.
+
+
+.. 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
+
+
+.. 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:
+
+    .. 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
diff --git a/doc/build/conf.py b/doc/build/conf.py
index 5bfd996..aabdf18 100644
--- a/doc/build/conf.py
+++ b/doc/build/conf.py
@@ -31,7 +31,8 @@
 #                'sphinx.ext.doctest', 'builder.builders']
 
 extensions = ['sphinx.ext.autodoc','sphinx.ext.intersphinx',
-                'sphinx.ext.doctest', 'builder.builders']
+                'changelog', 'sphinx_paramlinks',
+                'builder.builders']
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['templates']
diff --git a/doc/build/index.rst b/doc/build/index.rst
index a81d5ba..3104ca9 100644
--- a/doc/build/index.rst
+++ b/doc/build/index.rst
@@ -13,6 +13,7 @@
     filtering
     unicode
     caching
+    changelog
 
 Indices and Tables
 ------------------
diff --git a/doc/build/requirements.txt b/doc/build/requirements.txt
new file mode 100644
index 0000000..35f3f21
--- /dev/null
+++ b/doc/build/requirements.txt
@@ -0,0 +1,2 @@
+changelog
+sphinx-paramlinks>=0.2.0
diff --git a/mako/__init__.py b/mako/__init__.py
index 76c1045..aa99505 100644
--- a/mako/__init__.py
+++ b/mako/__init__.py
@@ -1,5 +1,5 @@
 # mako/__init__.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/_ast_util.py b/mako/_ast_util.py
index 3b0bd21..788b86a 100644
--- a/mako/_ast_util.py
+++ b/mako/_ast_util.py
@@ -1,5 +1,5 @@
 # mako/_ast_util.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/ast.py b/mako/ast.py
index f9ae3e1..24ef1b4 100644
--- a/mako/ast.py
+++ b/mako/ast.py
@@ -1,5 +1,5 @@
 # mako/ast.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/cache.py b/mako/cache.py
index 4433040..b7de6b5 100644
--- a/mako/cache.py
+++ b/mako/cache.py
@@ -1,5 +1,5 @@
 # mako/cache.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/codegen.py b/mako/codegen.py
index 2779a6d..769e0c6 100644
--- a/mako/codegen.py
+++ b/mako/codegen.py
@@ -1,5 +1,5 @@
 # mako/codegen.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/exceptions.py b/mako/exceptions.py
index dcf81a6..b8f97ee 100644
--- a/mako/exceptions.py
+++ b/mako/exceptions.py
@@ -1,5 +1,5 @@
 # mako/exceptions.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/ext/autohandler.py b/mako/ext/autohandler.py
index d56cbc1..99f651a 100644
--- a/mako/ext/autohandler.py
+++ b/mako/ext/autohandler.py
@@ -1,5 +1,5 @@
 # ext/autohandler.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/ext/babelplugin.py b/mako/ext/babelplugin.py
index 538c048..2ff0781 100644
--- a/mako/ext/babelplugin.py
+++ b/mako/ext/babelplugin.py
@@ -1,5 +1,5 @@
 # ext/babelplugin.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/ext/preprocessors.py b/mako/ext/preprocessors.py
index 5a15ff3..94569c5 100644
--- a/mako/ext/preprocessors.py
+++ b/mako/ext/preprocessors.py
@@ -1,5 +1,5 @@
 # ext/preprocessors.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/ext/pygmentplugin.py b/mako/ext/pygmentplugin.py
index 040a25c..7e3cb42 100644
--- a/mako/ext/pygmentplugin.py
+++ b/mako/ext/pygmentplugin.py
@@ -1,5 +1,5 @@
 # ext/pygmentplugin.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/ext/turbogears.py b/mako/ext/turbogears.py
index a4179d0..ebbee50 100644
--- a/mako/ext/turbogears.py
+++ b/mako/ext/turbogears.py
@@ -1,5 +1,5 @@
 # ext/turbogears.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/filters.py b/mako/filters.py
index 77aaf75..369cbc3 100644
--- a/mako/filters.py
+++ b/mako/filters.py
@@ -1,5 +1,5 @@
 # mako/filters.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/lexer.py b/mako/lexer.py
index 42b9ecd..dca88e1 100644
--- a/mako/lexer.py
+++ b/mako/lexer.py
@@ -1,5 +1,5 @@
 # mako/lexer.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/lookup.py b/mako/lookup.py
index 3edd101..3ac21f4 100644
--- a/mako/lookup.py
+++ b/mako/lookup.py
@@ -1,5 +1,5 @@
 # mako/lookup.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/parsetree.py b/mako/parsetree.py
index 1c04c26..ab83c5c 100644
--- a/mako/parsetree.py
+++ b/mako/parsetree.py
@@ -1,5 +1,5 @@
 # mako/parsetree.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/pygen.py b/mako/pygen.py
index ed7ccc7..cba9464 100644
--- a/mako/pygen.py
+++ b/mako/pygen.py
@@ -1,5 +1,5 @@
 # mako/pygen.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/pyparser.py b/mako/pyparser.py
index 75301cc..fc4db9d 100644
--- a/mako/pyparser.py
+++ b/mako/pyparser.py
@@ -1,5 +1,5 @@
 # mako/pyparser.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/runtime.py b/mako/runtime.py
index f94c109..5a3489b 100644
--- a/mako/runtime.py
+++ b/mako/runtime.py
@@ -1,5 +1,5 @@
 # mako/runtime.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/template.py b/mako/template.py
index 3a7b7f0..00783b7 100644
--- a/mako/template.py
+++ b/mako/template.py
@@ -1,5 +1,5 @@
 # mako/template.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
diff --git a/mako/util.py b/mako/util.py
index 0a9e14e..0108109 100644
--- a/mako/util.py
+++ b/mako/util.py
@@ -1,5 +1,5 @@
 # mako/util.py
-# Copyright (C) 2006-2013 the Mako authors and contributors <see AUTHORS file>
+# Copyright (C) 2006-2014 the Mako authors and contributors <see AUTHORS file>
 #
 # This module is part of Mako and is released under
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
