diff --git a/genshi/template/tests/eval.py b/genshi/template/tests/eval.py
--- a/genshi/template/tests/eval.py
+++ b/genshi/template/tests/eval.py
@@ -18,7 +18,7 @@
import unittest
from genshi.core import Markup
-from genshi.template.base import Context, _ctxt2dict
+from genshi.template.base import Context
from genshi.template.eval import Expression, Suite, Undefined, UndefinedError, \
UNDEFINED
@@ -241,11 +241,6 @@
self.assertEqual(42, expr.evaluate({'foo': foo, 'bar': {"x": 42}}))
def test_lambda(self):
- # Define a custom `sorted` function cause the builtin isn't available
- # on Python 2.3
- def sorted(items, compfunc):
- items.sort(compfunc)
- return items
data = {'items': [{'name': 'b', 'value': 0}, {'name': 'a', 'value': 1}],
'sorted': sorted}
expr = Expression("sorted(items, lambda a, b: cmp(a.name, b.name))")
@@ -274,30 +269,27 @@
expr = Expression("[i['name'] for i in items if i['value'] > 1]")
self.assertEqual(['b'], expr.evaluate({'items': items}))
- if sys.version_info >= (2, 4):
- # Generator expressions only supported in Python 2.4 and up
-
- def test_generator_expression(self):
- expr = Expression("list(n for n in numbers if n < 2)")
- self.assertEqual([0, 1], expr.evaluate({'numbers': range(5)}))
-
- expr = Expression("list((i, n + 1) for i, n in enumerate(numbers))")
- self.assertEqual([(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)],
- expr.evaluate({'numbers': range(5)}))
+ def test_generator_expression(self):
+ expr = Expression("list(n for n in numbers if n < 2)")
+ self.assertEqual([0, 1], expr.evaluate({'numbers': range(5)}))
- expr = Expression("list(offset + n for n in numbers)")
- self.assertEqual([2, 3, 4, 5, 6],
- expr.evaluate({'numbers': range(5), 'offset': 2}))
+ expr = Expression("list((i, n + 1) for i, n in enumerate(numbers))")
+ self.assertEqual([(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)],
+ expr.evaluate({'numbers': range(5)}))
- def test_generator_expression_with_getattr(self):
- items = [{'name': 'a', 'value': 1}, {'name': 'b', 'value': 2}]
- expr = Expression("list(i.name for i in items if i.value > 1)")
- self.assertEqual(['b'], expr.evaluate({'items': items}))
+ expr = Expression("list(offset + n for n in numbers)")
+ self.assertEqual([2, 3, 4, 5, 6],
+ expr.evaluate({'numbers': range(5), 'offset': 2}))
- def test_generator_expression_with_getitem(self):
- items = [{'name': 'a', 'value': 1}, {'name': 'b', 'value': 2}]
- expr = Expression("list(i['name'] for i in items if i['value'] > 1)")
- self.assertEqual(['b'], expr.evaluate({'items': items}))
+ def test_generator_expression_with_getattr(self):
+ items = [{'name': 'a', 'value': 1}, {'name': 'b', 'value': 2}]
+ expr = Expression("list(i.name for i in items if i.value > 1)")
+ self.assertEqual(['b'], expr.evaluate({'items': items}))
+
+ def test_generator_expression_with_getitem(self):
+ items = [{'name': 'a', 'value': 1}, {'name': 'b', 'value': 2}]
+ expr = Expression("list(i['name'] for i in items if i['value'] > 1)")
+ self.assertEqual(['b'], expr.evaluate({'items': items}))
if sys.version_info >= (2, 5):
def test_conditional_expression(self):
@@ -575,7 +567,7 @@
def test_import_star(self):
suite = Suite("from itertools import *")
data = Context()
- suite.execute(_ctxt2dict(data))
+ suite.execute(data)
assert 'ifilter' in data
def test_for(self):
diff --git a/genshi/template/tests/markup.py b/genshi/template/tests/markup.py
--- a/genshi/template/tests/markup.py
+++ b/genshi/template/tests/markup.py
@@ -81,8 +81,7 @@
tmpl = MarkupTemplate(xml, filename='test.html')
except BadDirectiveError, e:
self.assertEqual('test.html', e.filename)
- if sys.version_info[:2] >= (2, 4):
- self.assertEqual(1, e.lineno)
+ self.assertEqual(1, e.lineno)
def test_directive_value_syntax_error(self):
xml = """
"""
@@ -91,8 +90,7 @@
self.fail('Expected SyntaxError')
except TemplateSyntaxError, e:
self.assertEqual('test.html', e.filename)
- if sys.version_info[:2] >= (2, 4):
- self.assertEqual(1, e.lineno)
+ self.assertEqual(1, e.lineno)
def test_expression_syntax_error(self):
xml = """
@@ -103,8 +101,7 @@
self.fail('Expected SyntaxError')
except TemplateSyntaxError, e:
self.assertEqual('test.html', e.filename)
- if sys.version_info[:2] >= (2, 4):
- self.assertEqual(2, e.lineno)
+ self.assertEqual(2, e.lineno)
def test_expression_syntax_error_multi_line(self):
xml = """
@@ -117,8 +114,7 @@
self.fail('Expected SyntaxError')
except TemplateSyntaxError, e:
self.assertEqual('test.html', e.filename)
- if sys.version_info[:2] >= (2, 4):
- self.assertEqual(3, e.lineno)
+ self.assertEqual(3, e.lineno)
def test_markup_noescape(self):
"""
diff --git a/genshi/tests/input.py b/genshi/tests/input.py
--- a/genshi/tests/input.py
+++ b/genshi/tests/input.py
@@ -28,8 +28,7 @@
kind, data, pos = events[1]
self.assertEqual(Stream.TEXT, kind)
self.assertEqual(u'foo bar', data)
- if sys.version_info[:2] >= (2, 4):
- self.assertEqual((None, 1, 6), pos)
+ self.assertEqual((None, 1, 6), pos)
def test_text_node_pos_multi_line(self):
text = '''foo
@@ -38,8 +37,7 @@
kind, data, pos = events[1]
self.assertEqual(Stream.TEXT, kind)
self.assertEqual(u'foo\nbar', data)
- if sys.version_info[:2] >= (2, 4):
- self.assertEqual((None, 1, -1), pos)
+ self.assertEqual((None, 1, -1), pos)
def test_element_attribute_order(self):
text = ''
@@ -123,8 +121,7 @@
kind, data, pos = events[1]
self.assertEqual(Stream.TEXT, kind)
self.assertEqual(u'foo bar', data)
- if sys.version_info[:2] >= (2, 4):
- self.assertEqual((None, 1, 6), pos)
+ self.assertEqual((None, 1, 6), pos)
def test_text_node_pos_multi_line(self):
text = '''foo
@@ -133,8 +130,7 @@
kind, data, pos = events[1]
self.assertEqual(Stream.TEXT, kind)
self.assertEqual(u'foo\nbar', data)
- if sys.version_info[:2] >= (2, 4):
- self.assertEqual((None, 1, 6), pos)
+ self.assertEqual((None, 1, 6), pos)
def test_input_encoding_text(self):
text = u'\xf6
'.encode('iso-8859-1')
diff --git a/genshi/util.py b/genshi/util.py
--- a/genshi/util.py
+++ b/genshi/util.py
@@ -203,7 +203,7 @@
If the `keepxmlentities` parameter is provided and is a truth value, the
core XML entities (&, ', >, < and ") are left intact.
-
+
>>> stripentities('1 < 2 …', keepxmlentities=True)
u'1 < 2 \u2026'
"""