Changelog
=========

1.0b10 (released 24/11/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Do not apply namespace attribute 'xmlns' to root element if not
  set. [malthe]

- Fixed tuple unpacking in repeat loops. [malthe]

- Use a custom simple BufferIO class for the lxml.etree parser instead of
  standard StringIO. [hannosch]

- This was the wrong fix, however; what needed to be changed is that
  the class of the marker isntance must be available at
  module-scope. [malthe]

- Changed generation.marker back to a normal object instance. Otherwise we get
  PicklingError: Can't pickle <class 'chameleon.core.generation.marker'>:
  it's not the same object as chameleon.core.generation.marker. [hannosch]

- Changed two isinstance checks to check for basestring instead of str or
  unicode. [hannosch]

1.0b9 (released 19/11/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Added ``label`` property to expressions; this allows providing a
  human-readable label for values that are going to
  evaluated. [malthe]

- Normalize METAL slot names to ensure they're valid Python variable
  names. Non-valid characters are converted to underscore. [malthe]

- Renamed dynamic scope variable to `econtext` in order to reduce
  compatibility issues with ZPT. [malthe]

- Fixed issue where multiple defines would cause integrity
  issues. [malthe]

- Avoid self-closing tags that are not allowed in transitional
  HTML. [malthe]

- Use custom serialization method to serialize static default
  translation blocks; we can't rely on `lxml` for sane
  output. [malthe]

- Make `default` symbol available to dynamic attribute
  evaluations. [malthe]

- Visit evaluation before assignment in order to support assignments
  that rely on the same name in the dynamic variable scope. [malthe]

- Conditions may now be inverted; this facilitates the bug-fix of an
  issue where omit conditions were multi-part. [malthe]

- Make sure that arguments passed into the `render`-method are
  introduced in every nested scope. [malthe]

- Added translation language to main scope and make sure redefining it
  inside a closure does not cause issues with nested scope
  locals. [malthe]

1.0b8 (released 16/11/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Only pretend to delete variables; this improves performance and
  guarantees that we don't attempt to delete a variables which is used
  in a nested scope (closure). It works, because the code generation
  transform silently drops the delete-statements, but removes them
  from its internal scope dictionary. [malthe]

- Remove variables from scope dictionary upon block exit. [malthe]

- Split out compile-function such that we can always write the source
  code to disk in debug-mode. [malthe]

- Correctly transfer scope to callback-function that will fill macro
  slot contents. Previously, we would precompute fill-slots, but this
  was wrong since it's expected to inherit the scope of the macro
  currently in use. [malthe]

- Made error handler compatible with Python 2.4 [malthe]

- Maintain symbol mappings for joined expressions. [malthe]

1.0b7 (released 15/11/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Fixed interpolation edge where a right curly brace not part of an
  interpolation expression would cancel a succeeding
  interpolation. [malthe]

- Pass `target_language` when using macros. [malthe]

1.0b6 (released 13/11/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~

- When validating inserted content (in debug-mode), make sure we wrap
  content as a proper HTML document, including HTML entity
  definitions. [malthe]

- If an element does not belong to a known namespace, assume it's the
  default namespace. This change is relevant after the introduction of
  fallback elements. [malthe]

- XML declarations should be printed with or without a doctype
  element, and only if the template includes it. [malthe]

1.0b5 (released 12/11/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Encode code annotations if encoding is required. [malthe]

- Added filename to XML syntax error exception message. [malthe]

- Fixed bug where a template would be wrapped with namespace
  definitions even if an XML header is present. [malthe]

- Added support for fallback element. [malthe]

- Enabled error handler for macro renderer. [malthe]

- Added error handler which adds debugging information to the
  exception object's string output (in debug-mode only). [malthe]

1.0b4 (released 28/10/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Fixed translation issues (see recently added tests). [malthe]

- Refactored string coercion. [malthe]

1.0b3 (released 13/10/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Fixed issue with parsing expression containing curly
  braces. [malthe]

- Added support for unscoped variable assignment. [malthe]

1.0b2 (released 11/10/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Added support for translating dynamic body text (used in
  interpolation expressions). [malthe]

- Added support for macros prebound to keyword arguments. [malthe]

1.0b1 (released 2/10/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~

- Fixed bugs related to temporary variables with loops and
  conditions. [malthe]

- Set default value for `auto-reload` based on the CHAMELEON_DEBUG
  environment variable check. [malthe]

1.0a4 (released 9/29/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~

- Added method to generate unscoped temporary variables.  [malthe]

- Make lxml a hard dependency for now until the lxml-less logic is stable.
  [wichert]

1.0a3 (released 9/26/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~

- TemplateLoader now checks a default_parser class attribute if no
  parser is specified. [wichert]

1.0a2 (released 9/26/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~

- Added support for dynamic skip condition. [malthe]

- Fixed bug where an AttributeError would be raised when using the
  file cache. [malthe]

1.0a1 (released 9/24/2008)
~~~~~~~~~~~~~~~~~~~~~~~~~~

- First release.


