again documentation updates fixed another python 2.4 bug.  Imports are not evaluated with the template context any longer which makes it possible to keep them in memory

--HG--
branch : trunk
diff --git a/jinja2/runtime.py b/jinja2/runtime.py
index 0aad4bd..f4a2f1a 100644
--- a/jinja2/runtime.py
+++ b/jinja2/runtime.py
@@ -39,7 +39,7 @@
     else:
         def concat(gen):
             try:
-                return u''.join(list(gen()))
+                return u''.join(list(gen))
             except:
                 exc_type, exc_value, tb = sys.exc_info()
                 raise exc_type, exc_value, tb.tb_next
@@ -233,17 +233,16 @@
                  catch_kwargs, catch_varargs, caller):
         self._environment = environment
         self._func = func
+        self._argument_count = len(arguments)
         self.name = name
         self.arguments = arguments
-        self.argument_count = len(arguments)
         self.defaults = defaults
         self.catch_kwargs = catch_kwargs
         self.catch_varargs = catch_varargs
         self.caller = caller
 
     def __call__(self, *args, **kwargs):
-        self.argument_count = len(self.arguments)
-        if not self.catch_varargs and len(args) > self.argument_count:
+        if not self.catch_varargs and len(args) > self._argument_count:
             raise TypeError('macro %r takes not more than %d argument(s)' %
                             (self.name, len(self.arguments)))
         arguments = []
@@ -255,7 +254,7 @@
                     value = kwargs.pop(name)
                 except KeyError:
                     try:
-                        value = self.defaults[idx - self.argument_count]
+                        value = self.defaults[idx - self._argument_count]
                     except IndexError:
                         value = self._environment.undefined(
                             'parameter %r was not provided' % name)
@@ -275,7 +274,7 @@
             raise TypeError('macro %r takes no keyword argument %r' %
                             (self.name, iter(kwargs).next()))
         if self.catch_varargs:
-            arguments.append(args[self.argument_count:])
+            arguments.append(args[self._argument_count:])
         return self._func(*arguments)
 
     def __repr__(self):