there is now a workaround in the compiler that makes sure it's possible to call things with python keywords.  {{ foo(class=42) }} works again

--HG--
branch : trunk
diff --git a/jinja2/parser.py b/jinja2/parser.py
index daa7a0d..34a3140 100644
--- a/jinja2/parser.py
+++ b/jinja2/parser.py
@@ -13,10 +13,10 @@
 from jinja2.exceptions import TemplateSyntaxError
 
 
+statement_end_tokens = set(['variable_end', 'block_end', 'in'])
 _statement_keywords = frozenset(['for', 'if', 'block', 'extends', 'print',
                                  'macro', 'include', 'from', 'import'])
 _compare_operators = frozenset(['eq', 'ne', 'lt', 'lteq', 'gt', 'gteq', 'in'])
-statement_end_tokens = set(['variable_end', 'block_end', 'in'])
 _tuple_edge_tokens = set(['rparen']) | statement_end_tokens
 
 
@@ -178,8 +178,17 @@
                                                  'underscores can not be '
                                                  'imported', target.lineno,
                                                  self.filename)
-                node.names.append(target.name)
                 self.stream.next()
+                if self.stream.current.test('name:as'):
+                    self.stream.next()
+                    alias = self.stream.expect('name')
+                    if not nodes.Name(alias.value, 'store').can_assign():
+                        raise TemplateSyntaxError('can\'t name imported '
+                                                  'object %r.' % alias.value,
+                                                  alias.lineno, self.filename)
+                    node.names.append((target.name, alias.value))
+                else:
+                    node.names.append(target.name)
                 if self.stream.current.type is not 'comma':
                     break
             else: