Edgewall Software

source: tags/0.4.4/ChangeLog

Last change on this file was 711, checked in by cmlenz, 17 years ago

Ported [710] to 0.4.x branch.

  • Property svn:eol-style set to native
File size: 15.6 KB
Line 
1Version 0.4.4
2http://svn.edgewall.org/repos/genshi/tags/0.4.4/
3(Aug 14, 2007, from branches/stable/0.4.x)
4
5 * Fixed augmented assignment to local variables in Python code blocks.
6 * Fixed handling of nested function and class definitions in Python code
7   blocks.
8 * Includes were not raising `TemplateNotFound` exceptions even when no
9   fallback has been specified. That has been corrected.
10 * The template loader now raises a `TemplateNotFound` error when a previously
11   cached template is removed or renamed, where it previously was passing up
12   an `OSError`.
13 * The Genshi I18n filter can be configured to only extract messages found in
14   `gettext` function calls, ignoring any text nodes and attribute values
15   (ticket #138).
16
17
18Version 0.4.3
19http://svn.edgewall.org/repos/genshi/tags/0.4.3/
20(?, from branches/stable/0.4.x)
21
22 * The I18n filter no longer extracts or translates literal strings in
23   attribute values that also contain expressions.
24 * Added `loader_callback` option to plugin interface, which allows specifying
25   a callback function that the template loader should invoke whenever a new
26   template is loaded (ticket #130). Note that the value for this option can
27   not be specified as a string, only as an actual function object, which means
28   it is not available for use through configuration files.
29 * The I18n filter now extracts messages from gettext functions even inside
30   ignored tags (ticket #132).
31 * The HTML sanitizer now strips any CSS comments in style attributes, which
32   could previously be used to hide malicious property values.
33 * The HTML sanitizer now also removes any HTML comments encountered, as those
34   may be used to hide malicious payloads targetting a certain "innovative"
35   browser that goes and interprets the content of specially prepared comments.
36 * Attribute access in template expressions no longer silently ignores
37   exceptions other than `AttributeError` raised in the attribute accessor.
38
39
40Version 0.4.2
41http://svn.edgewall.org/repos/genshi/tags/0.4.2/
42(Jun 20, from branches/stable/0.4.x)
43
44 * The `doctype` parameter of the markup serializers now also accepts the "name"
45   of the doctype as string, in addition to the `(name, pubid, sysid)` tuple.
46 * The I18n filter was not replacing the original attributes with the
47   translation, but instead adding a second attribute with the same name.
48 * `TextTemplate` can now handle unicode source (ticket #125).
49 * A `<?python ?>` processing instruction containing trailing whitespace no
50   longer causes a syntax error (ticket #127).
51 * The I18n filter now skips the content of elements that have an `xml:lang`
52   attribute with a fixed string value. Basically, `xml:lang` can now be used
53   as a flag to mark specific sections as not needing localization.
54 * Added plugin for message extraction via Babel (http://babel.edgewall.org/).
55
56
57Version 0.4.1
58http://svn.edgewall.org/repos/genshi/tags/0.4.1/
59(May 21 2007, from branches/stable/0.4.x)
60
61 * Fix incorrect reference to translation function in the I18N filter.
62 * The `ET()` function now correctly handles attributes with a namespace.
63 * XML declarations are now processed internally, as well as written to the
64   output when XML serialization is used (ticket #111).
65 * Added the functions `encode()` and `get_serializer()` to the `genshi.output`
66   module, which provide a lower-level API to the functionality previously only
67   available through `Stream.render()` and `Stream.serialize()`.
68 * The `DocType` class now has a `get(name)` function that returns a `DOCTYPE`
69   tuple for a given string.
70 * Added frameset variants to the `DocType` constants for HTML 4.01 and XHTML
71   1.0.
72 * Improved I18n extraction for pluralizable messages: for any translation
73   function with multiple string arguments (such as ``ngettext``), a single
74   item with a tuple of strings is yielded, instead an item for each string
75   argument.
76 * The `HTMLFormFiller` stream filter no longer alters form elements for which
77   the data element contains no corresponding item.
78 * Code in `<?python ?>` processing instructions no longer gets the special
79   treatment as Python code in template expressions, i.e. item and attribute
80   access are no longer interchangeable (which was broken in a number of ways
81   anyway, see ticket #113). This change does not affect expressions.
82 * Numerous fixes for the execution of Python code in `<?python ?>` processing
83   instructions (tickets #113 and #114).
84 * The `py:def` (and `#def`) directive now supports "star args" (i.e. `*args`
85   and `**kwargs`) in the function declaration (ticket #116).
86
87
88Version 0.4
89http://svn.edgewall.org/repos/genshi/tags/0.4.0/
90(Apr 16 2007, from branches/stable/0.4.x)
91
92 * New example applications for CherryPy and web.py.
93 * The template loader now uses a LRU cache to limit the number of cached
94   templates to a configurable maximum. Also, a race condition in the template
95   loader was fixed by adding locking.
96 * A new filter (genshi.filters.HTMLFormFiller) was added, which can populate
97   HTML forms based on a dictionary of values.
98 * The set of permitted tag and attribute names for the HTMLSanitizer can now
99   be configured per instance.
100 * The template engine plugin now supports a range of options for
101   configuration, for example to set the default serialization method, the
102   default output encoding, or the default DOCTYPE.
103 * The ElementTree adaptation function `ET()` has moved into the `genshi.input`
104   module.
105 * Allow `when` directives to omit the test expression as long as the
106   associated choose directive does have one. In that case, the when branch is
107   followed if the expression of the choose directive evaluates to a truth
108   value.
109 * Unsuccessful attribute or item lookups now return `Undefined` objects for
110   nicer error messages.
111 * Split up the `genshi.template` module into multiple modules inside the new
112   `genshi.template` package.
113 * Results of expression evaluation are no longer implicitly called if they
114   are callable.
115 * Instances of the `genshi.core.Attrs` class are now immutable (they are
116   subclasses of `tuple` instead of `list`).
117 * `MarkupTemplate`s can now be instantiated from markup streams, in addition
118   to strings and file-like objects (ticket #69).
119 * Improve handling of incorrectly nested tags in the HTML parser.
120 * Template includes can now be nested inside fallback content.
121 * Expressions can now contain dict literals (ticket #37).
122 * It is now possible to have one or more escaped dollar signs in front of a
123   full expression (ticket #92).
124 * The `Markup` class is now available by default in template expressions
125   (ticket #67).
126 * The handling of namespace declarations in XML/XHTML output has been improved.
127 * The `Attrs` class no longer automatically wraps all attribute names in
128   `QName` objects. This is now the responsibility of whoever is instantiating
129   `Attrs` objects (for example, stream filters and generators).
130 * Python code blocks are now supported using the `<?python ?>` processing
131   instruction (ticket #84).
132 * The way errors in template expressions are handled can now be configured. The
133   option `LenientLookup` provides the same forgiving mode used in previous
134   Genshi versions, while `StrictLookup` raises exceptions when undefined
135   variables or members are accessed. The lenient mode is still the default in
136   this version, but that may change in the future. (ticket #88)
137 * If a variable is not necessarily defined at the top level of the template
138   data, the new built-in functions `defined(key)` and `value_of(key, default)`
139   can be used so that the template also works in strict lookup mode. These
140   functions were previously only available when using Genshi via the template
141   engine plugin (for compatibility with Kid).
142 * `style` attributes are no longer allowed by the `HTMLSanitizer` by default.
143   If they are explicitly added to the set of safe attributes, any unicode
144   escapes in the attribute value are now handled properly.
145 * Namespace declarations on conditional elements (for example using a `py:if`
146   directive`) are no longer moved to the following element when the element
147   originally carrying the declaration is removed from the stream (ticket #107).
148 * Added basic built-in support for internationalizing templates by providing
149   a new `Translator` class that can both extract localizable strings from a
150   stream, and replace those strings with their localizations at render time.
151   The code for this was largely taken from previous work done by Matt Good
152   and David Fraser.
153
154
155Version 0.3.6
156http://svn.edgewall.org/repos/genshi/tags/0.3.6/
157(Dec 11 2006, from branches/stable/0.3.x)
158
159 * The builder API now accepts streams as children of elements and fragments.
160
161
162Version 0.3.5
163http://svn.edgewall.org/repos/genshi/tags/0.3.5/
164(Nov 22 2006, from branches/stable/0.3.x)
165
166 * Fix XPath traversal in match templates. Previously, `div/p` would be treated
167   the same as `div//p`, i.e. it would match all descendants and not just the
168   immediate children.
169 * Preserve whitespace in HTML `<pre>` elements also when they contain child
170   elements.
171 * Match templates no longer match their own output (ticket #77).
172 * Blank lines before directives in text templates are now preserved as
173   expected (ticket #62).
174
175
176Version 0.3.4
177http://svn.edgewall.org/repos/genshi/tags/0.3.4/
178(Nov 2 2006, from branches/stable/0.3.x)
179
180 * The encoding of HTML and XML files, as well as markup and text templates,
181   can now be specified. Also, the encoding specified in XML declarations is
182   now respected unless an expiclit encoding is requested.
183 * Expressions used as arguments for `py:with`, `py:def`, and `py:for`
184   directives can now contain non-ASCII strings.
185
186
187Version 0.3.3
188http://svn.edgewall.org/repos/genshi/tags/0.3.3/
189(Oct 16 2006, from branches/stable/0.3.x)
190
191 * Fixed bug introduced in 0.3.2 that broke the parsing of templates which
192   declare the same namespace more than once in a nested fashion.
193 * Fixed the parsing of HTML entity references inside attribute values, both
194   in the `XMLParser` and the `HTMLParser` classes.
195 * Some changes to usage of absolute vs. relative template paths to ensure that
196   the filenamed-keyed cache employed by the TemplateLoader doesn't mix up
197   templates with the same name, but from different subdirectories.
198
199
200Version 0.3.2
201http://svn.edgewall.org/repos/genshi/tags/0.3.2/
202(Oct 12 2006, from branches/stable/0.3.x)
203
204 * Exceptions from templates now contain the absolute path to the template file
205   when a search path is used. This enables tracebacks to display the line in
206   question.
207 * The template engine plugin now provides three different types: "genshi" and
208   "genshi-markup" map to markup templates, while "genshi-text" maps to text
209   templates.
210 * Fixed the namespace context used by XPath patterns in py:match templates.
211   The were erroneously using the namespace context of the elements being
212   matched, where they should rather use the context in which they were
213   defined.
214 * The contents of `<script>` and `<style>` elements are no longer escaped when
215   serializing to HTML but declaring the XHTML namespace in the template.
216 * Improved error message raised when using the `py:for` directive on an object
217   that is not iterable (ticket #60).
218 * Fixed the XPath function `starts-with()` which was always returning true
219   (ticket #61).
220
221
222Version 0.3.1
223http://svn.edgewall.org/repos/genshi/tags/0.3.1/
224(Sep 22 2006, from branches/stable/0.3.x)
225
226 * Includes and user-defined filters were not getting the correct context data
227   when used inside a match template (ticket #56).
228 * XPath patterns using the union operator (`|`) were returning only partial
229   results in some cases.
230
231
232Version 0.3
233http://svn.edgewall.org/repos/genshi/tags/0.3.0/
234(Sep 17 2006, from branches/stable/0.3.x)
235
236 * The project name was changed from "Markup" to "Genshi". See UPGRADE.txt
237   for upgrade instructions.
238 * Expression evaluation now differentiates between undefined variables and
239   variables that are defined but set to `None`. This also means that local
240   variables can override built-ins even if the local variable are set to
241   `None` (ticket #36).
242 * The plugin implementation now makes more functions available for use inside
243   templates: XML(), HTML(), defined(), and value-of(). These are mostly for
244   migration from Kid.
245 * The parsing of `py:with` directives has been improved: you can now assign
246   to multiple names, and semicolons inside string literals are treated as
247   expected.
248 * Generator expressions can now be used in template expressions (ticket #16).
249 * Added serialization to plain text (ticket #41).
250 * Calling functions from template expressions with *args and/or **kwargs
251   now works correctly (ticket #42).
252 * The `TemplateLoader` class and the `Template` instances that it manages are
253   now thread-safe, as they no longer keep any state related to the current
254   processing context.
255 * Stream filters and serializers can now be applied using the "pipe" (bitwise
256   or) operator "|".
257 * The execution of named template functions (`py:def`) no longer silently
258   swallows TypeError exceptions (ticket #44).
259 * The XML Parser now correctly handles unicode input (ticket #43).
260 * HTML entities can now be used in templates without having to declare an HTML
261   document type.
262 * Error reporting on undefined entities has been fixed.
263 * Fix traversal of substreams by XPath expressions. For example, the path
264   '*/*' no longer matches non-immediate child elements, and '@*' no longer
265   matches the attributes of descendants.
266 * Fixes for `py:match` which would get confused when it should be applied
267   to multiple elements (ticket #49).
268 * Using namespace prefixes in XPath expressions is now supported.
269 * Expressions now correctly handle slices (ticket #51).
270 * A simple text-based template language is now included for generating
271   plain text output (ticket #47).
272
273
274Version 0.2
275http://svn.edgewall.org/repos/genshi/tags/0.2.0/
276(Aug 22 2006, from branches/stable/0.2.x)
277
278 * XPath syntax errors now contain position info (ticket #20).
279 * Errors in expression evaluation now contain the correct line number in the
280   template (ticket #22).
281 * <script> and <style> element contents are no longer escaped when using HTML
282   serialization (ticket #24).
283 * In some cases expressions in templates did not get interpolated (ticket
284   #26).
285 * CDATA sections are now passed through the pipeline and serialized correctly.
286   That allows using <script> or <style> elements in XHTML output that is still
287   compatible with HTML user agents.
288 * The XHTML serializer now correctly handles elements in foreign namespaces
289   (such as SVG or MathML).
290 * Fixed relative includes in templates on Windows (ticket #27).
291 * Output can be encoded using legacy codecs such as ISO-8859-1. Any character
292   not representable in the chosen encoding gets replaced by the corresponding
293   XML character reference.
294 * String literals in XPath expressions that contain spaces are now parsed
295   as expected.
296 * Added support for the XPath functions boolean(), ceiling(), concat(),
297   contains(), false(), floor(), normalize-space(), number(), round(),
298   starts-with(), string-length(), substring(), substring-after(),
299   substring-before(), translate(), and true().
300 * Non-ASCII characters in expressions should now be handled correctly (ticket
301   #29).
302 * Default values for arguments of template functions now also work with
303   constants and complex expressions (they only worked for string or number
304   literals before).
305 * XPath expressions in now support XPath variables ($var) in predicates
306   (ticket #31).
307 * Expressions in templates can now span multiple lines if they are enclosed
308   in curly braces.
309 * py:def macros can now be invoked from within expressions inside attribute
310   values (ticket #34).
311
312
313Version 0.1
314http://svn.edgewall.org/repos/genshi/tags/0.1.0/
315(Aug 3 2006, from branches/stable/0.1.x)
316
317 * First public release
Note: See TracBrowser for help on using the repository browser.