Commit graph

4 commits

Author SHA1 Message Date
ryoon
9dc2ab762e Update to 0.7.3
Changelog:
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]
2013-02-19 18:49:02 +00:00
asau
e1ab7079b6 Drop superfluous PKG_DESTDIR_SUPPORT, "user-destdir" is default these days. 2012-10-31 11:16:30 +00:00
ryoon
bacb726943 Update to 0.5.0
Changelog:
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]
2011-10-12 13:09:48 +00:00
adam
a6adf539a9 Mako is a template library written in Python. It provides a familiar, non-XML
syntax which compiles into Python modules for maximum performance. Mako's
syntax and API borrows from the best ideas of many others, including Django
templates, Cheetah, Myghty, and Genshi. Conceptually, Mako is an embedded
Python (i.e. Python Server Page) language, which refines the familiar ideas of
componentized layout and inheritance to produce one of the most straightforward
and flexible models available, while also maintaining close ties to Python
calling and scoping semantics.
2011-02-11 08:24:02 +00:00