-
Notifications
You must be signed in to change notification settings - Fork 36
/
ChangeLog
636 lines (551 loc) · 31 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
Version 0.8
http://svn.edgewall.org/repos/genshi/tags/0.8.0/
(???, from branches/stable/0.7.x)
* ???
Version 0.7.9
https://github.com/edgewall/genshi/releases/tag/0.7.9
(Jun 16 2024, from branches/stable/0.7.x)
* Add Python 3.12 to CI matrix and fix Python 3.12 support. (#77 by Simon Cross)
* Add Python 3.13 beta to CI. (#81 by Simon Cross)
* Add badges to the README. (#82 by Simon Cross)
Version 0.7.8
https://github.com/edgewall/genshi/releases/tag/0.7.8
(Jun 14 2024, from branches/stable/0.7.x)
* Do not merge sub directives if they have not been changed.
(#53 by Cédric Krier)
* Silence deprecation warnings from attempting to import Ellipsis and
Str (which are needed to support older Pythons). (#73 by Cédric Krier)
* Remove fallback to distutils, patching of bdist_egg and use of doctools.
(#74 by Simon Cross)
* Clarify the escaping in _URL_FINDER. (#76 by Simon Cross)
* Fix installation with setuptools >= 60. (#68 by Graham Inggs)
Version 0.7.7
https://github.com/edgewall/genshi/releases/tag/0.7.7
(Apr 21 2022, from branches/stable/0.7.x)
* Declared setuptools as the build backend (#65 by Jason R. Coombs)
* Fixed deprecation warnings caused by escape sequences in regex pattern
strings (#63 by Jan Vollmer)
Version 0.7.6
https://github.com/edgewall/genshi/releases/tag/0.7.6
(Feb 9 2022, from branches/stable/0.7.x)
* Added support for Python 3.10 and 3.11 (#54, #56, #58 by Brandt Bucher,
Felix Schwarz & Simon Cross)
* Replaced assertEquals with assertEqual. assertEquals was deprecated in
Python 3.2. (#42 by Simon Cross)
* Removed used of element.getchildren() which has been removed from the Python
standard library elementtree in Python 3.9. (#57 by Jan Vollmer)
* Added support for Python 3.10 by using CodeType.replace in
`build_code_chunk` to make code object updates more robust against changes
in CodeType. (#49 by Felix Schwarz)
* Moved tests and releases workflows to GitHub Actions (#61, #51 by Felix
Schwarz and Simon Cross)
* Fixed reference leak in Markup.join C implementation. (#47 by Simon Cross)
* Sort directives only by directive index. Previously they were sorted by the
class, namespace and arguments of the directives. This was acceptable in
Python 2, but is a bug in Python 3 since some the arguments may not be
comparable. (#44 by Cédric Krier)
* Add support for msgctxt to i18n. (#13 by Eric O'Connell)
* Implemented skipping of empty attributes during translation to match the
behaviour during translation extraction (i.e. don't try to translate empty
strings that are not extracted). (#38 by Jun Omae)
* Ported setuptools options to declarative config in setup.cfg. (#40 by Eli
Schwartz)
* Removed used of deprecated setuptools Feature in setup.py. (#39 by Eli
Schwartz)
Version 0.7.5
https://github.com/edgewall/genshi/releases/tag/0.7.5
(Nov 18 2020, from branches/stable/0.7.x)
* Fix handling of slices containing function call, variable name and attribute
lookup AST nodes in Python 3.9 in template scripts (template expressions
already correctly handled these cases). Thank you to Roger Leigh for
finding this issue and contributing the fix for it.
* C speedup module now available for Python >= 3.3. Support was added for
PEP 393 (flexible string representation). Thank you to Inada Naoki for
contributing this major enhancement.
* Remove the custom 2to3 fixers (no longer used since the removal of 2to3
in 0.7.4).
Version 0.7.4
https://github.com/edgewall/genshi/releases/tag/0.7.4
(Nov 3 2020, from branches/stable/0.7.x)
* Add support for deprecation of ast classes slice, Index and ExtSlice in
Python 3.9. See https://bugs.python.org/issue34822 for details of the
changes.
* Update the project URL in setup.py to point to GitHub.
* Remove use of 2to3 for generating Python 3 compatible code.
Version 0.7.3
https://github.com/edgewall/genshi/releases/tag/0.7.3
(May 27 2019, from branches/stable/0.7.x)
* Add support for PEP 570 (positional-only keyword parameters) changes to CodeType
in Python 3.8.
Version 0.7.2
https://github.com/edgewall/genshi/releases/tag/0.7.2
(Apr 27 2019, from branches/stable/0.7.x)
* Add support for Python 3.8.
Version 0.7.1
https://github.com/edgewall/genshi/releases/tag/0.7.1
(Sep 1 2018, from branches/stable/0.7.x)
* Add support for Python 3.5, 3.6 and 3.7.
* Move to GitHub and Travis CI.
* Add support for iterator arguments to _speedups Markup.join implementation so that it matches
the Python implementation (fixes #574).
* Add HTML5 input placeholder attribute to list of translatable attributes (fixes #577).
* Add missing boolean attributes to XHTML and HTML serializers (fixes #570).
* Fix infinite recursion in template inlining (fixes #584).
* Support slash escaped of CRLF newlines (fixes #569).
* Disable the speedups C extension on CPython >= 3.3 since Genshi doesn't support the new Unicode
C API yet.
* Fix handling of case where a translation has text after a closing tag (fixes #566).
* Fix assert with side-effect in xi:fallback directive processing (see #565).
Version 0.7
http://svn.edgewall.org/repos/genshi/tags/0.7.0/
(Jan 27 2013, from branches/stable/0.7.x)
* Add support for Python 3.1, 3.2 and 3.3 (via 2to3) and for PyPy. The
majority of the coding was done in a sprint run by the Cape Town Python
Users Group with financial assistance from the Python Software Foundation.
* Default input and output encodings changed from UTF-8 to None (i.e. unicode
strings).
* Skip Mako benchmarks if Mako isn't installed (rather than failing
completely).
Version 0.6.1
http://svn.edgewall.org/repos/genshi/tags/0.6.1/
(Jan 27 2012, from branches/stable/0.6.x)
* Security fix to enhance sanitizing of CSS in style attributes. Genshi's
`HTMLSanitizer` disallows style attributes by default (this remains
unchanged) and warns against such attacks in its documentation, but
the provided CSS santizing is now less lacking (see #455).
* Fix for error in how `HTMLFormFiller` would handle `textarea` elements if
no value was not supplied form them.
* The `HTMLFormFiller` now correctly handles check boxes and radio buttons
with an empty `value` attribute.
* Template `Context` objects now have a `.copy` method.
* Added a simple `tox.ini` file for using tox to test against multiple
verions of Python.
* Fix for bug in `QName` comparison (see #413).
* Fix for bug in handling of trailing events in match template matches
(see #399).
* Fix i18n namespace declaration in documentation (see #400).
* Fix for bug in caching of events in serializers by no longer caching
`(TEXT, Markup)` events (see #429).
* Fix handling of `None` by `Markup.escape` in `_speedups.c` (see #439).
* Fix handling of internal state by match templates (relevant when multiple
templates match the same part of the stream, see #370).
* Fix handling of multiple events between or on either side of start and end
tags in translated messages (see #404).
* Fix test failures caused by changes in HTMLParser in Python 2.7 (see #501).
* Fix infinite loop in interplotation lexing that was introduced by a change
in Python 2.7's tokenizer (see #540).
* Fix handling of processing instructions without data (see #368).
* Updated MANIFEST.in so as not to rely on build from Subersion 1.6.
Version 0.6
http://svn.edgewall.org/repos/genshi/tags/0.6.0/
(Apr 22 2010, from branches/stable/0.6.x)
* Support for Python 2.3 has been dropped.
* Rewrite of the XPath evaluation engine for better performance and improved
correctness. This is the result of integrating work done by Marcin Kurczych
during GSoC 2008.
* Updated the Python AST processing for template code evaluation to use the
`_ast` module instead of the deprecated `compiler` package, including an
adapter layer for Python 2.4. This, too, is the result of integrating work
done by Marcin Kurczych during GSoC 2008.
* Added caching in the serialization stage for improved performance in some
cases.
* Various improvements to the HTML sanitization filter.
* Fix problem with I18n filter that would get confused by expressions in
attribute values when inside an `i18n:msg` block (ticket #250).
* Fix problem with the transformation filter dropping events after the
selection (ticket #290).
* `for` loops in template code blocks no longer establish their own locals
scope, meaning you can now access variables assigned in the loop outside
of the loop, just as you can in regular Python code (ticket #259).
* Import statements inside function definitions in template code blocks no
longer result in an UndefinedError when the imported name is accessed
(ticket #276).
* Fixed handling of relative URLs with fragment identifiers containing colons
in the `HTMLSanitizer` (ticket #274).
* Added an option to the `HTMLFiller` to also populate password fields.
* Match template processing no longer produces unwanted duplicate output in
some cases (ticket #254).
* Templates instantiated without a loader now get an implicit loader based on
their file path, or the current directory as a fallback (ticket #320).
* Added documentation for the `TemplateLoader`.
* Enhanced documentation for internationalization.
Version 0.5.1
http://svn.edgewall.org/repos/genshi/tags/0.5.1/
(Jul 9 2008, from branches/stable/0.5.x)
* Fix problem with nested match templates not being applied when buffering
on the outer `py:match` is disabled. Thanks to Erik Bray for reporting the
problem and providing a test case!
* Fix problem in `Translator` filter that would cause the translation of
text nodes to fail if the translation function returned an object that was
not directly a string, but rather something like an instance of the
`LazyProxy` class in Babel (ticket #145).
* Fix problem with match templates incorrectly being applied multiple times.
* Includes from templates loaded via an absolute path now include the correct
file in nested directories as long if no search path has been configured
(ticket #240).
* Unbuffered match templates could result in parts of the matched content
being included in the output if the match template didn't actually consume
it via one or more calls to the `select()` function (ticket #243).
Version 0.5
http://svn.edgewall.org/repos/genshi/tags/0.5.0/
(Jun 9 2008, from branches/stable/0.5.x)
* Added #include directive for text templates (ticket #115).
* Added new markup transformation filter contributed by Alec Thomas. This
provides gorgeous jQuery-inspired stream transformation capabilities based
on XPath expressions.
* When using HTML or XHTML serialization, the `xml:lang` attribute is
automatically translated to the `lang` attribute which HTML user agents
understand.
* Added support for the XPath 2 `matches()` function in XPath expressions,
which allow matching against regular expressions.
* Support for Python code blocks in templates can now be disabled
(ticket #123).
* Includes are now processed when the template is parsed if possible, but
only if the template loader is not set to do automatic reloading. Included
templates are basically inlined into the including template, which can
speed up rendering of that template a bit.
* Added new syntax for text templates, which is more powerful and flexible
with respect to white-space and line breaks. It also supports Python code
blocks. The old syntax is still available and the default for now, but in a
future release the new syntax will become the default, and some time after
that the old syntax will be removed.
* Added support for passing optimization hints to `<py:match>` directives,
which can speed up match templates in many cases, for example when a match
template should only be applied once to a stream, or when it should not be
applied recursively.
* Text templates now default to rendering as plain text; it is no longer
necessary to explicitly specify the "text" method to the `render()` or
`serialize()` method of the generated markup stream.
* XInclude elements in markup templates now support the `parse` attribute;
when set to "xml" (the default), the include is processed as before, but
when set to "text", the included template is parsed as a text template using
the new syntax (ticket #101).
* Python code blocks inside match templates are now executed (ticket #155).
* The template engine plugin no longer adds the `default_doctype` when the
`fragment` parameter is `True`.
* The `striptags` function now also removes HTML/XML-style comments (ticket
#150).
* The `py:replace` directive can now also be used as an element, with an
attribute named `value` (ticket #144).
* The `TextSerializer` class no longer strips all markup in text by default,
so that it is still possible to use the Genshi `escape` function even with
text templates. The old behavior is available via the `strip_markup` option
of the serializer (ticket #146).
* Assigning to a variable named `data` in a Python code block no longer
breaks context lookup.
* The `Stream.render` now accepts an optional `out` parameter that can be
used to pass in a writable file-like object to use for assembling the
output, instead of building a big string and returning it.
* The XHTML serializer now strips `xml:space` attributes as they are only
allowed on very few tags.
* Match templates are now applied in a more controlled fashion: in the order
they are declared in the template source, all match templates up to (and
including) the matching template itself are applied to the matched content,
whereas the match templates declared after the matching template are only
applied to the generated content (ticket #186).
* The `TemplateLoader` class now provides an `_instantiate()` method that can
be overridden by subclasses to implement advanced template instantiation
logic (ticket #204).
* The search path of the `TemplateLoader` class can now contain ''load
functions'' in addition to path strings. A load function is passed the
name of the requested template file, and should return a file-like object
and some metadata. New load functions are supplied for loading from egg
package data, and loading from different loaders depending on the path
prefix of the requested filename (ticket #182).
* Match templates can now be processed without keeping the complete matched
content in memory, which could cause excessive memory use on long pages.
The buffering can be disabled using the new `buffer` optimization hint on
the `<py:match>` directive.
* Improve error reporting when accessing an attribute in a Python expression
raises an `AttributeError` (ticket #191).
* The `Markup` class now supports mappings for right hand of the `%` (modulo)
operator in the same way the Python string classes do, except that the
substituted values are escape. Also, the special constructor which took
positional arguments that would be substituted was removed. Thus the
`Markup` class now supports the same arguments as that of its `unicode`
base class (ticket #211).
* The `Template` class and its subclasses, as well as the interpolation API,
now take an `filepath` parameter instead of `basedir` (ticket #207).
* The `XHTMLSerializer` now has a `drop_xml_decl` option that defaults to
`True`. Setting it to `False` will cause any XML decl in the serialized
stream to be included in the output as it would for XML serialization.
* Add support for a protocol that would allow interoperability of different
Python packages that generate and/or consume markup, based on the special
`__html__()` method (ticket #202).
Version 0.4.4
http://svn.edgewall.org/repos/genshi/tags/0.4.4/
(Aug 14, 2007, from branches/stable/0.4.x)
* Fixed augmented assignment to local variables in Python code blocks.
* Fixed handling of nested function and class definitions in Python code
blocks.
* Includes were not raising `TemplateNotFound` exceptions even when no
fallback has been specified. That has been corrected.
* The template loader now raises a `TemplateNotFound` error when a previously
cached template is removed or renamed, where it previously was passing up
an `OSError`.
* The Genshi I18n filter can be configured to only extract messages found in
`gettext` function calls, ignoring any text nodes and attribute values
(ticket #138).
Version 0.4.3
http://svn.edgewall.org/repos/genshi/tags/0.4.3/
(Jul 17 2007, from branches/stable/0.4.x)
* The I18n filter no longer extracts or translates literal strings in
attribute values that also contain expressions.
* Added `loader_callback` option to plugin interface, which allows specifying
a callback function that the template loader should invoke whenever a new
template is loaded (ticket #130). Note that the value for this option can
not be specified as a string, only as an actual function object, which means
it is not available for use through configuration files.
* The I18n filter now extracts messages from gettext functions even inside
ignored tags (ticket #132).
* The HTML sanitizer now strips any CSS comments in style attributes, which
could previously be used to hide malicious property values.
* The HTML sanitizer now also removes any HTML comments encountered, as those
may be used to hide malicious payloads targetting a certain "innovative"
browser that goes and interprets the content of specially prepared comments.
* Attribute access in template expressions no longer silently ignores
exceptions other than `AttributeError` raised in the attribute accessor.
Version 0.4.2
http://svn.edgewall.org/repos/genshi/tags/0.4.2/
(Jun 20 2007, from branches/stable/0.4.x)
* The `doctype` parameter of the markup serializers now also accepts the "name"
of the doctype as string, in addition to the `(name, pubid, sysid)` tuple.
* The I18n filter was not replacing the original attributes with the
translation, but instead adding a second attribute with the same name.
* `TextTemplate` can now handle unicode source (ticket #125).
* A `<?python ?>` processing instruction containing trailing whitespace no
longer causes a syntax error (ticket #127).
* The I18n filter now skips the content of elements that have an `xml:lang`
attribute with a fixed string value. Basically, `xml:lang` can now be used
as a flag to mark specific sections as not needing localization.
* Added plugin for message extraction via Babel (http://babel.edgewall.org/).
Version 0.4.1
http://svn.edgewall.org/repos/genshi/tags/0.4.1/
(May 21 2007, from branches/stable/0.4.x)
* Fix incorrect reference to translation function in the I18N filter.
* The `ET()` function now correctly handles attributes with a namespace.
* XML declarations are now processed internally, as well as written to the
output when XML serialization is used (ticket #111).
* Added the functions `encode()` and `get_serializer()` to the `genshi.output`
module, which provide a lower-level API to the functionality previously only
available through `Stream.render()` and `Stream.serialize()`.
* The `DocType` class now has a `get(name)` function that returns a `DOCTYPE`
tuple for a given string.
* Added frameset variants to the `DocType` constants for HTML 4.01 and XHTML
1.0.
* Improved I18n extraction for pluralizable messages: for any translation
function with multiple string arguments (such as ``ngettext``), a single
item with a tuple of strings is yielded, instead an item for each string
argument.
* The `HTMLFormFiller` stream filter no longer alters form elements for which
the data element contains no corresponding item.
* Code in `<?python ?>` processing instructions no longer gets the special
treatment as Python code in template expressions, i.e. item and attribute
access are no longer interchangeable (which was broken in a number of ways
anyway, see ticket #113). This change does not affect expressions.
* Numerous fixes for the execution of Python code in `<?python ?>` processing
instructions (tickets #113 and #114).
* The `py:def` (and `#def`) directive now supports "star args" (i.e. `*args`
and `**kwargs`) in the function declaration (ticket #116).
Version 0.4
http://svn.edgewall.org/repos/genshi/tags/0.4.0/
(Apr 16 2007, from branches/stable/0.4.x)
* New example applications for CherryPy and web.py.
* The template loader now uses a LRU cache to limit the number of cached
templates to a configurable maximum. Also, a race condition in the template
loader was fixed by adding locking.
* A new filter (genshi.filters.HTMLFormFiller) was added, which can populate
HTML forms based on a dictionary of values.
* The set of permitted tag and attribute names for the HTMLSanitizer can now
be configured per instance.
* The template engine plugin now supports a range of options for
configuration, for example to set the default serialization method, the
default output encoding, or the default DOCTYPE.
* The ElementTree adaptation function `ET()` has moved into the `genshi.input`
module.
* Allow `when` directives to omit the test expression as long as the
associated choose directive does have one. In that case, the when branch is
followed if the expression of the choose directive evaluates to a truth
value.
* Unsuccessful attribute or item lookups now return `Undefined` objects for
nicer error messages.
* Split up the `genshi.template` module into multiple modules inside the new
`genshi.template` package.
* Results of expression evaluation are no longer implicitly called if they
are callable.
* Instances of the `genshi.core.Attrs` class are now immutable (they are
subclasses of `tuple` instead of `list`).
* `MarkupTemplate`s can now be instantiated from markup streams, in addition
to strings and file-like objects (ticket #69).
* Improve handling of incorrectly nested tags in the HTML parser.
* Template includes can now be nested inside fallback content.
* Expressions can now contain dict literals (ticket #37).
* It is now possible to have one or more escaped dollar signs in front of a
full expression (ticket #92).
* The `Markup` class is now available by default in template expressions
(ticket #67).
* The handling of namespace declarations in XML/XHTML output has been improved.
* The `Attrs` class no longer automatically wraps all attribute names in
`QName` objects. This is now the responsibility of whoever is instantiating
`Attrs` objects (for example, stream filters and generators).
* Python code blocks are now supported using the `<?python ?>` processing
instruction (ticket #84).
* The way errors in template expressions are handled can now be configured. The
option `LenientLookup` provides the same forgiving mode used in previous
Genshi versions, while `StrictLookup` raises exceptions when undefined
variables or members are accessed. The lenient mode is still the default in
this version, but that may change in the future. (ticket #88)
* If a variable is not necessarily defined at the top level of the template
data, the new built-in functions `defined(key)` and `value_of(key, default)`
can be used so that the template also works in strict lookup mode. These
functions were previously only available when using Genshi via the template
engine plugin (for compatibility with Kid).
* `style` attributes are no longer allowed by the `HTMLSanitizer` by default.
If they are explicitly added to the set of safe attributes, any unicode
escapes in the attribute value are now handled properly.
* Namespace declarations on conditional elements (for example using a `py:if`
directive`) are no longer moved to the following element when the element
originally carrying the declaration is removed from the stream (ticket #107).
* Added basic built-in support for internationalizing templates by providing
a new `Translator` class that can both extract localizable strings from a
stream, and replace those strings with their localizations at render time.
The code for this was largely taken from previous work done by Matt Good
and David Fraser.
Version 0.3.6
http://svn.edgewall.org/repos/genshi/tags/0.3.6/
(Dec 11 2006, from branches/stable/0.3.x)
* The builder API now accepts streams as children of elements and fragments.
Version 0.3.5
http://svn.edgewall.org/repos/genshi/tags/0.3.5/
(Nov 22 2006, from branches/stable/0.3.x)
* Fix XPath traversal in match templates. Previously, `div/p` would be treated
the same as `div//p`, i.e. it would match all descendants and not just the
immediate children.
* Preserve whitespace in HTML `<pre>` elements also when they contain child
elements.
* Match templates no longer match their own output (ticket #77).
* Blank lines before directives in text templates are now preserved as
expected (ticket #62).
Version 0.3.4
http://svn.edgewall.org/repos/genshi/tags/0.3.4/
(Nov 2 2006, from branches/stable/0.3.x)
* The encoding of HTML and XML files, as well as markup and text templates,
can now be specified. Also, the encoding specified in XML declarations is
now respected unless an expiclit encoding is requested.
* Expressions used as arguments for `py:with`, `py:def`, and `py:for`
directives can now contain non-ASCII strings.
Version 0.3.3
http://svn.edgewall.org/repos/genshi/tags/0.3.3/
(Oct 16 2006, from branches/stable/0.3.x)
* Fixed bug introduced in 0.3.2 that broke the parsing of templates which
declare the same namespace more than once in a nested fashion.
* Fixed the parsing of HTML entity references inside attribute values, both
in the `XMLParser` and the `HTMLParser` classes.
* Some changes to usage of absolute vs. relative template paths to ensure that
the filenamed-keyed cache employed by the TemplateLoader doesn't mix up
templates with the same name, but from different subdirectories.
Version 0.3.2
http://svn.edgewall.org/repos/genshi/tags/0.3.2/
(Oct 12 2006, from branches/stable/0.3.x)
* Exceptions from templates now contain the absolute path to the template file
when a search path is used. This enables tracebacks to display the line in
question.
* The template engine plugin now provides three different types: "genshi" and
"genshi-markup" map to markup templates, while "genshi-text" maps to text
templates.
* Fixed the namespace context used by XPath patterns in py:match templates.
The were erroneously using the namespace context of the elements being
matched, where they should rather use the context in which they were
defined.
* The contents of `<script>` and `<style>` elements are no longer escaped when
serializing to HTML but declaring the XHTML namespace in the template.
* Improved error message raised when using the `py:for` directive on an object
that is not iterable (ticket #60).
* Fixed the XPath function `starts-with()` which was always returning true
(ticket #61).
Version 0.3.1
http://svn.edgewall.org/repos/genshi/tags/0.3.1/
(Sep 22 2006, from branches/stable/0.3.x)
* Includes and user-defined filters were not getting the correct context data
when used inside a match template (ticket #56).
* XPath patterns using the union operator (`|`) were returning only partial
results in some cases.
Version 0.3
http://svn.edgewall.org/repos/genshi/tags/0.3.0/
(Sep 17 2006, from branches/stable/0.3.x)
* The project name was changed from "Markup" to "Genshi". See UPGRADE.txt
for upgrade instructions.
* Expression evaluation now differentiates between undefined variables and
variables that are defined but set to `None`. This also means that local
variables can override built-ins even if the local variable are set to
`None` (ticket #36).
* The plugin implementation now makes more functions available for use inside
templates: XML(), HTML(), defined(), and value-of(). These are mostly for
migration from Kid.
* The parsing of `py:with` directives has been improved: you can now assign
to multiple names, and semicolons inside string literals are treated as
expected.
* Generator expressions can now be used in template expressions (ticket #16).
* Added serialization to plain text (ticket #41).
* Calling functions from template expressions with *args and/or **kwargs
now works correctly (ticket #42).
* The `TemplateLoader` class and the `Template` instances that it manages are
now thread-safe, as they no longer keep any state related to the current
processing context.
* Stream filters and serializers can now be applied using the "pipe" (bitwise
or) operator "|".
* The execution of named template functions (`py:def`) no longer silently
swallows TypeError exceptions (ticket #44).
* The XML Parser now correctly handles unicode input (ticket #43).
* HTML entities can now be used in templates without having to declare an HTML
document type.
* Error reporting on undefined entities has been fixed.
* Fix traversal of substreams by XPath expressions. For example, the path
'*/*' no longer matches non-immediate child elements, and '@*' no longer
matches the attributes of descendants.
* Fixes for `py:match` which would get confused when it should be applied
to multiple elements (ticket #49).
* Using namespace prefixes in XPath expressions is now supported.
* Expressions now correctly handle slices (ticket #51).
* A simple text-based template language is now included for generating
plain text output (ticket #47).
Version 0.2
http://svn.edgewall.org/repos/genshi/tags/0.2.0/
(Aug 22 2006, from branches/stable/0.2.x)
* XPath syntax errors now contain position info (ticket #20).
* Errors in expression evaluation now contain the correct line number in the
template (ticket #22).
* <script> and <style> element contents are no longer escaped when using HTML
serialization (ticket #24).
* In some cases expressions in templates did not get interpolated (ticket
#26).
* CDATA sections are now passed through the pipeline and serialized correctly.
That allows using <script> or <style> elements in XHTML output that is still
compatible with HTML user agents.
* The XHTML serializer now correctly handles elements in foreign namespaces
(such as SVG or MathML).
* Fixed relative includes in templates on Windows (ticket #27).
* Output can be encoded using legacy codecs such as ISO-8859-1. Any character
not representable in the chosen encoding gets replaced by the corresponding
XML character reference.
* String literals in XPath expressions that contain spaces are now parsed
as expected.
* Added support for the XPath functions boolean(), ceiling(), concat(),
contains(), false(), floor(), normalize-space(), number(), round(),
starts-with(), string-length(), substring(), substring-after(),
substring-before(), translate(), and true().
* Non-ASCII characters in expressions should now be handled correctly (ticket
#29).
* Default values for arguments of template functions now also work with
constants and complex expressions (they only worked for string or number
literals before).
* XPath expressions in now support XPath variables ($var) in predicates
(ticket #31).
* Expressions in templates can now span multiple lines if they are enclosed
in curly braces.
* py:def macros can now be invoked from within expressions inside attribute
values (ticket #34).
Version 0.1
http://svn.edgewall.org/repos/genshi/tags/0.1.0/
(Aug 3 2006, from branches/stable/0.1.x)
* First public release